我的A UITableView
略小于其父视图。每个单元格的高度与表格的高度相同(一次只能看到一个单元格完全可见)。
UITableView
将clipsToBounds
设置为NO
,以便能够看到下一个单元格的顶部。
但下一个单元格未加载到visibleCells
,因为它不适合UITableView
。当我开始滚动它时(或者如果我将单元格高度设置为1个像素)。如何让UITableView始终加载2个单元格,而不只是加载到表格中的单元格?
在此图示中,默认情况下未加载第二个UITableViewCell,仅在我开始滚动时加载。
PS:我也在桌面视图上使用pagingEnabled
。
答案 0 :(得分:3)
您可以使tableview大于单个单元格,然后设置tableview内容插入,以便顶部和底部单元格以最大/最小滚动显示在正确的位置。你也可以在tableview的那个不应该存在的部分放置一个不可见的视图(你当前没有的那个部分),这样桌面视图的这一部分仍然是不可选择的。
这可能有点工作,但确保绘制单元格的唯一方法是在屏幕上显示它。
在进一步的研究中,this guy说了同样的话,但出于不同的原因。
2。 UITableView缓冲
这可能是您可以在任何iOS应用程序中提高感知性能的最简单更改之一。 简单来说,如果你想预先加载表视图的数据 表视图的可见边界,您只需要扩展表 查看自己以实现所需的缓冲区。例如,你有一个 具有全屏桌面视图(320x480或320x568)的iPhone应用程序。如果 您希望表视图缓冲额外的表视图高度的数据, 你只需要使你的桌面视图高两倍(320x960或320x1136)和 然后使用UIScrollView的contentInset计算高度扩展 和scrollIndicatorInsets属性。它真的很容易。同 这个简单的改变你的表视图,你现在有能力 避免显示内容为空白内容的表格视图单元格 下载然后让内容不和劲地显示出来。
答案 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中则会丢弃它们。
要执行此操作,请在UITableView
和NSMutableArray
中添加所有单元格,从NSMutableArray加载它们。
cellForRowAtIndexPath:
答案 2 :(得分:1)
除非有很多行,或者你需要一些你没有提到的类似于表格的功能,否则你可能会更乐意不使用UITableView。您所描述的内容听起来更像普通的UIScrollView。
例如,假设只有四个“单元格”。那么这只是一个普通的UIScrollView,您可以预先填充其整个内容(四个“单元格”)。
另一方面,如果有100个“单元格”,那么你可能会用尽内存。但是当您不再可见时,仍然删除子视图,并在用户滚动时根据需要创建它们;有关如何管理它的滚动视图,请参阅WWDC 2010视频。