需要設(shè)置初始顯示位置,最初想到的是用viewWillAppear方法或者viewDidAppear方法設(shè)置tableview的偏移量,但是后來發(fā)現(xiàn)沒有效果。后來試著在viewDidLayoutSubviews設(shè)置,真的有用。
- (void)viewDidLayoutSubviews {
[super viewDidLayoutSubviews];
//用一個(gè)標(biāo)識(shí)防止不停地調(diào)用
if (!_hasFinishLayouSubview) {
_hasFinishLayouSubview = YES;
[_mainTableView layoutIfNeeded];
[_mainTableView setContentOffset:CGPointMake(0, 400)];
}}
如果是想要跳轉(zhuǎn)到tableview的某一行,則需要修改以下語句(注意,tableview一定要存在該行,否則會(huì)出錯(cuò))。
//[_mainTableView setContentOffset:CGPointMake(0, 400)];
NSIndexPath *indexPath = [NSIndexPath indexPathForRow:0 inSection:0];
[_mainTableView scrollToRowAtIndexPath:indexPath atScrollPosition:UITableViewScrollPositionTop animated:NO];
如果tableview的數(shù)據(jù)源不是靜態(tài)的話,也不能實(shí)現(xiàn)跳轉(zhuǎn)到某一行??赡苁且?yàn)樵谡{(diào)用viewDidLayoutSubviews方法時(shí),tableview還沒有確定數(shù)據(jù)源。