美文网首页
24.tableview注意事项

24.tableview注意事项

作者: 枫之叶_小乙哥 | 来源:发表于2020-10-10 16:26 被阅读0次
    // tableview滚动到顶部的最佳方法
    // ([self.tableV scrollToTop]; 有时无效),另外预估高度也可能会是tableview不能完全滚动到顶部
    [self.tableV scrollToRowAtIndexPath:[NSIndexPath indexPathForRow:0 inSection:0] atScrollPosition:UITableViewScrollPositionBottom animated:NO];
    
    // cell使用masonry布局时,不要使用预估高度, 代理方法和属性都不要设置预估高度
    - (UITableView *)tableV{
        if (!_tableV) {
            _tableV = [[UITableView alloc] initWithFrame:CGRectZero style:UITableViewStylePlain];
            _tableV.delegate = self;
            _tableV.dataSource = self;
            _tableV.mj_header = self.refreshHeader;
            _tableV.mj_footer = self.refreshFooter;
            // 使用masonry布局cell时,不要使用预估高度,会冲突
    //        _tableV.estimatedRowHeight = 0;
    //        _tableV.estimatedSectionHeaderHeight = 0;
    //        _tableV.estimatedSectionFooterHeight = 0;
            _tableV.contentInset = UIEdgeInsetsMake(kFitWidth(10), 0, kTabBarSafeH + kFitWidth(44), 0);
            _tableV.backgroundColor = [UIColor nf_bgColor];
            _tableV.separatorStyle = UITableViewCellSeparatorStyleNone;
        }
        return _tableV;
    }
    
    
       // 有没有数据都要刷一次最新的
            [self.tableV reloadData];
    
          // 不要在reloadData的时候立刻执行滚动操作,这样会导致无法完全滚动到顶部
          // 因为reloaddata是需要时间的,所以可以等主线程空闲的时候再执行滚动操作,这样就不会相互干扰, 先刷新,在滚动
            dispatch_async(dispatch_get_main_queue(), ^{
                if (self.dataSource.count > 0) {
                    // 最后参数值为YES,有滚动到顶部的过渡动画效果。([self.tableV scrollToTop]; 有时无效)
                    [self.tableV scrollToRowAtIndexPath:[NSIndexPath indexPathForRow:0 inSection:0] atScrollPosition:UITableViewScrollPositionTop animated:NO];
                }
            });
    

    相关文章

      网友评论

          本文标题:24.tableview注意事项

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