5

私のアプリにはカスタムUITableViewセルがあります。一度に1つのセルだけを表示したいのですが、次のセルは部分的に表示されるはずです。isPagingEnabledScrollViewでは、YESに設定できます。

しかし、どうすれば上記で行うことができUITableViewますか?

ありがとう

4

3 に答える 3

7

UITableViewはから継承されるため、テーブル ビュー自体にをUIScrollView設定できることに注意してください。pagingEnabledYES

もちろん、これはすべてのセルとテーブル ビュー自体が同じ高さである場合にのみ機能します。

スクロール後にテーブルビューの上部からセルを常に開始したい場合は、 a を使用して次のUIScrollViewDelegateように実装できます。

- (void)scrollViewWillEndDragging:(UIScrollView *)scrollView
                     withVelocity:(CGPoint)velocity
              targetContentOffset:(inout CGPoint *)targetContentOffset
{
  UITableView *tv = (UITableView*)scrollView;
  NSIndexPath *indexPathOfTopRowAfterScrolling = [tv indexPathForRowAtPoint:
                                                       *targetContentOffset
                                                 ];
  CGRect rectForTopRowAfterScrolling = [tv rectForRowAtIndexPath:
                                             indexPathOfTopRowAfterScrolling
                                       ];
  targetContentOffset->y=rectForTopRowAfterScrolling.origin.y;
}

これにより、スクロール アクションが終了するコンテンツ オフセットを調整できます。

于 2012-08-10T13:27:55.127 に答える
-1

これには UITableView をまったく使用しないと思います。

ページ化されたコンテンツのスタックが多い UIScrollView を使用すると思います。スクロール アクティビティでそのコンテンツを動的に再構築できるため、UITableView のメモリ管理を模倣できます。UIScrollView は、その contentView のフレームの形状に応じて、垂直方向のページングを喜んで行います。

言い換えれば、UITableView をスクロール ビューのようにページ分割するよりも、UIScrollView をテーブルのように動作させる方が簡単だと思います。

于 2012-08-10T11:58:53.043 に答える