如何在滚动TableView中加载单元格?

时间:2017-04-04 10:36:04

标签: ios swift uitableview

我有一个TableView和1000个单元格。

我试图快速加载TableView。

如何加载25个第一个单元格,然后在滚动TableView中加载单元格?

2 个答案:

答案 0 :(得分:0)

正如Eric在上面的评论中已经提到的那样,tableView / collectionView在其自身中进行了非常优化。 TableView / CollectionView仅加载可见索引路径范围内的单元格,然后重用相同的单元格。这就是你有

的原因 tableView.dequeueReusableCell(withIdentifier: )中的

cellForRowAtIndexPath方法。

拥有所有这些,我相信你正在寻找一种方法来加载块中的数据,而不是一次性加载整组数据(比如Facebook的主页,加班,你向下滚动到达表的末尾)它加载了一些更多帖子)

如果这是你的要求,那就是Pagination。这需要服务器端和客户端的支持。

确保您确定每个响应将包含的最佳数据(json对象),并要求您的Web API开发人员实现分页逻辑。

最后在iOS上,实现,

override func scrollViewDidScroll(_ scrollView: UIScrollView) {
        super.scrollViewDidScroll(scrollView)

        let scrollViewHeight = scrollView.frame.size.height;
        let scrollContentSizeHeight = scrollView.contentSize.height;
        let scrollOffset = scrollView.contentOffset.y;

        if (scrollOffset + scrollViewHeight == scrollContentSizeHeight)
        {
            //reached the end of scroll, download next set of data and update your data source
            self.fetchNextSetOfData()
            return
        }
    }

您可能必须发送服务器信息,例如从中获取数据的偏移量以及您期望作为Web API参数的数据数量

答案 1 :(得分:-1)

Eric的回答是正确的。但是,如果你真的想加载25个第一个单元格并在之后加载下一个单元格,你必须这样做 用这样的东西计算单元格高度

单元格高度=屏幕高度/要显示的单元格数 如果您有导航控制器,则单元格高度会有所不同。