私のテーブルビューでは、一番上までスクロールしなければなりません。しかし、最初のオブジェクトがセクション0、行0になることは保証できません。もしかしたら、私のテーブルビューはセクション番号5から始まるかもしれません。
そのため、以下のような例外が発生しました。
[mainTableView scrollToRowAtIndexPath:[NSIndexPath indexPathForRow:0 inSection:0] atScrollPosition:UITableViewScrollPositionTop animated:NO];
テーブルビューの上部にスクロールする別の方法はありますか?
UITableViewはUIScrollViewのサブクラスなので、これも使えます。
[mainTableView scrollRectToVisible:CGRectMake(0, 0, 1, 1) animated:YES];
または
[mainTableView setContentOffset:CGPointZero animated:YES];
また、スウィフトでは
mainTableView.setContentOffset(CGPointZero, animated:true)
また、Swift 3 &以上では以下のようになります。
mainTableView.setContentOffset(.zero, animated: true)
注。この回答は、iOS 11以降では有効ではありません。
私は
[mainTableView setContentOffset:CGPointZero animated:YES];
テーブルビューにトップインセットがある場合は、それを差し引かなければなりません。
[mainTableView setContentOffset:CGPointMake(0.0f, -mainTableView.contentInset.top) animated:YES];
このコードでは、特定のセクションをトップにスクロールさせることができます。
CGRect cellRect = [tableinstance rectForSection:section];
CGPoint origin = [tableinstacne convertPoint:cellRect.origin
fromView:<tableistance>];
[tableinstance setContentOffset:CGPointMake(0, origin.y)];