如何仅对iPhone中的可见单元格进行计算?

时间:2010-10-07 05:22:18

标签: iphone uiview uitableview nsthread background-process

我在表格视图中有这么多单元格说近500个。每个单元格都有自己的图像和字符串段落。实际上我绘制了那些图像&在UIView的drawRect方法的帮助下的字符串。所以我需要计算图像和每个字符串的位置(包括它们的宽度和高度来测量单元格高度和包裹区域)。如果我一次为所有细胞进行计算,则需要一些时间..这不好。我想快速展示细胞。所以我只想对可见细胞进行计算,并希望立即显示可见细胞。然后其他单元格的计算应该在后台进行。还有一件事,我将为每个细胞进行一次计算。有一次,我将值存储在数组中。下次我将根据数组值显示事物,而不是通过计算..

请有人帮我做...我只想知道是否有可能?如果是的话,实现它的程序是什么?

提前致谢...

3 个答案:

答案 0 :(得分:2)

没有“程序”来执行此操作。 UITableView总是以这种方式运行。您提供回调来告诉它有多少部分和每个部分的行,以及如何填充每个单元格。 UITableView只会要求您填充可见的单元格,甚至会在单元格滚动边缘时回收单元格(而不是无限制地创建单元格)。

答案 1 :(得分:0)

您可以通过

检索UITableViewController中的可见单元格
[self.tableView indexPathsForVisibleRows]

然后你可以对可见细胞进行处理。 e.g。

for (NSIndexPath *path in paths ) {
// do some processing in [self.tableView cellForRowAtIndexPath:path]
}

我为每个单元格使用自定义drawrect为1000多行做了相同的自定义视图,并使用上面的方法来优化单元格的加载。我的处理只发生在ff:

  1. 在加载(viewDidLoad)时,更新可见的单元格。

  2. 当用户停止滚动时(滚动时默认为空白占位符)

答案 2 :(得分:0)

我认为您可以使用UITableView的visibleCells属性。

UITableView *tableView;
NSArray *cells = tableView.visibleCells;