美文网首页iOS 开发
tableview 设置初始显示位置

tableview 设置初始显示位置

作者: 34码的小孩子 | 来源:发表于2016-09-19 14:59 被阅读848次

    需要设置初始显示位置,最初想到的是用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还没有确定数据源。

    相关文章

      网友评论

        本文标题:tableview 设置初始显示位置

        本文链接:https://www.haomeiwen.com/subject/vdhnettx.html