美文网首页
iOS ~ UItableView回到顶部

iOS ~ UItableView回到顶部

作者: 阳光下的叶子呵 | 来源:发表于2021-10-13 17:19 被阅读0次
    //***************方法一***************//
    [self.tableView  scrollRectToVisible:CGRectMake(0, 0, 1, 1) animated:NO];
    
    //***************方法二:偏移量***************//
    [self.tableView setContentOffset:CGPointMake(0,0) animated:NO];
    
    //***************方法三:cell的位置***************//
    NSIndexPath* indexPat = [NSIndexPath indexPathForRow:0 inSection:0];
    [self.tableView scrollToRowAtIndexPath:indexPat atScrollPosition:UITableViewScrollPositionBottom animated:YES];
    
        // 注意添加判断:是否有section为0的这个section
    if ([self.tableView numberOfRowsInSection:0]) {
            NSIndexPath *indexPathOne = [NSIndexPath indexPathForRow:0 inSection:0];
            [self.tableView scrollToRowAtIndexPath:indexPathOne atScrollPosition:UITableViewScrollPositionTop animated:YES];
        }
    

    方法四:

    这种方法比较通用,有没有 tableHeaderView 都可以,不过缺点是这里的 animated 一定要为 NO,否则某些情况下不生效。

        [UIView animateWithDuration:0 animations:^{
            [self.tableView setContentOffset:CGPointZero animated:NO];
        } completion:^(BOOL finished) {
            [self.tableView reloadData];
        }];
    

    ⚠️WARRING:
    方案2 有一个隐藏问题。回滚到最前面时,你的 tableView 会加载前面的cell,这时候会调用 cellForRowAtIndexPath,以及 heightForRowAtIndexPath 等代理方法;但是在这之前,你可能已经删掉了 dataSource 里的数据,或者更换了 dataSource 里的数据,那么从 dataSource 数组取值时候,很可能会出现数组越界现象。
    所以,建议一定要加好数组越界的判定处理啊!!!

    作者:我叫没名字啊
    链接:https://www.jianshu.com/p/e0684c461388
    来源:简书
    著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

    相关文章

      网友评论

          本文标题:iOS ~ UItableView回到顶部

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