2017-04-04 49 views
0

我有一个TableView和1000个单元格。如何在滚动TableView中加载单元格?

我想快速加载TableView。

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

+5

tableview已经可以像这样工作了。它只会创建可见单元格(以及更多),它不会一次为整个对象数组创建单元格。 //但是也许你实际上不是在谈论你的tableview,而是在填充数组之前以分页的方式加载数据? – Moritz

+0

你的意思是分页机制吗? – svvoff

+0

@alireza,你有解决方案吗? –

回答

0

正如Eric在他上面的评论中已经提到的那样,tableView/collectionView是非常优化的。 TableView/CollectionView只加载可见索引路径范围内的单元格,然后重新使用同一个单元格。这就是为什么你有

tableView.dequeueReusableCell(withIdentifier:)方法在cellForRowAtIndexPath。所有这一切,我相信你正在寻找一种方法来加载数据的块,而不是一次性加载整个数据集(如Facebook的家庭饲料,加班,你向下滚动到达它加载tableView的结尾几个帖子)

如果这就是你的要求,那就是所谓的分页。这需要来自服务器和客户端的支持。

确保您确定每个响应将包含的最佳数据数量(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 PARAM从数据的数据和数量

-1

Eric的答案是正确的。但是,如果你真的想加载25第一个单元格,之后接下来的细胞加载,你必须 计算单元格高度的东西像电池这样

细胞高度=屏幕高度/数字显示 单元格高度将发生变化如果你有导航控制器。

相关问题