需要设置初始显示位置,最初想到的是用viewWillAppear方法或者viewDidAppear方法设置tableview的偏移量,但是后来发现没有效果。后来试着在viewDidLayoutSubviews设置,真的有用。
- (void)viewDidLayoutSubviews {
[super viewDidLayoutSubviews];
//用一个标识防止不停地调用
if (!_hasFinishLayouSubview) {
_hasFinishLayouSubview = YES;
[_mainTableView layoutIfNeeded];
[_mainTableView setContentOffset:CGPointMake(0, 400)];
}}
如果是想要跳转到tableview的某一行,则需要修改以下语句(注意,tableview一定要存在该行,否则会出错)。
//[_mainTableView setContentOffset:CGPointMake(0, 400)];
NSIndexPath *indexPath = [NSIndexPath indexPathForRow:0 inSection:0];
[_mainTableView scrollToRowAtIndexPath:indexPath atScrollPosition:UITableViewScrollPositionTop animated:NO];
如果tableview的数据源不是静态的话,也不能实现跳转到某一行。可能是因为在调用viewDidLayoutSubviews方法时,tableview还没有确定数据源。