UITableView中的可见单元格数

时间:2014-01-10 20:32:33

标签: ios uitableview

我的A UITableView略小于其父视图。每个单元格的高度与表格的高度相同(一次只能看到一个单元格完全可见)。

UITableViewclipsToBounds设置为NO,以便能够看到下一个单元格的顶部。

但下一个单元格未加载到visibleCells,因为它不适合UITableView。当我开始滚动它时(或者如果我将单元格高度设置为1个像素)。如何让UITableView始终加载2个单元格,而不只是加载到表格中的单元格?

views hierarchy

在此图示中,默认情况下未加载第二个UITableViewCell,仅在我开始滚动时加载。

PS:我也在桌面视图上使用pagingEnabled

3 个答案:

答案 0 :(得分:3)

您可以使tableview大于单个单元格,然后设置tableview内容插入,以便顶部和底部单元格以最大/最小滚动显示在正确的位置。你也可以在tableview的那个不应该存在的部分放置一个不可见的视图(你当前没有的那个部分),这样桌面视图的这一部分仍然是不可选择的。

这可能有点工作,但确保绘制单元格的唯一方法是在屏幕上显示它。

在进一步的研究中,this guy说了同样的话,但出于不同的原因。

  

2。 UITableView缓冲

     

这可能是您可以在任何iOS应用程序中提高感知性能的最简单更改之一。   简单来说,如果你想预先加载表视图的数据   表视图的可见边界,您只需要扩展表   查看自己以实现所需的缓冲区。例如,你有一个   具有全屏桌面视图(320x480或320x568)的iPhone应用程序。如果   您希望表视图缓冲额外的表视图高度的数据,   你只需要使你的桌面视图高两倍(320x960或320x1136)和   然后使用UIScrollView的contentInset计算高度扩展   和scrollIndicatorInsets属性。它真的很容易。同   这个简单的改变你的表视图,你现在有能力   避免显示内容为空白内容的表格视图单元格   下载然后让内容不和劲地显示出来。

答案 1 :(得分:1)

<{1>}或viewDidAppear

中的

viewWillAppear

此行将分配所有for (int i=0 ; i <10 ; i ++) { [self tableView: self.myTableView cellForRowAtIndexPath: indexPath]; // give your indexpath for section=0 and row=i; } ,但UITableViewCell如果不在Visiblecells中则会丢弃它们。

要执行此操作,请在UITableViewNSMutableArray中添加所有单元格,从NSMutableArray加载它们。

cellForRowAtIndexPath:

答案 2 :(得分:1)

除非有很多行,或者你需要一些你没有提到的类似于表格的功能,否则你可能会更乐意不使用UITableView。您所描述的内容听起来更像普通的UIScrollView。

例如,假设只有四个“单元格”。那么这只是一个普通的UIScrollView,您可以预先填充其整个内容(四个“单元格”)。

另一方面,如果有100个“单元格”,那么你可能会用尽内存。但是当您不再可见时,仍然删除子视图,并在用户滚动时根据需要创建它们;有关如何管理它的滚动视图,请参阅WWDC 2010视频。