Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/iphone/44.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何仅对iPhone中的可见单元格进行计算?_Iphone_Uiview_Uitableview_Nsthread_Background Process - Fatal编程技术网

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

如何仅对iPhone中的可见单元格进行计算?,iphone,uiview,uitableview,nsthread,background-process,Iphone,Uiview,Uitableview,Nsthread,Background Process,我在表格视图中有很多单元格,比如说将近500个。每个单元格都有自己的图像和字符串段落。实际上,我是在UIView的drawRect方法的帮助下绘制这些图像和字符串的。所以我需要计算图像和每个字符串的位置(包括它们的宽度和高度,以测量单元格高度和环绕区域)。如果我一次计算所有单元格,需要一些时间。。那不好。我想快速显示细胞。所以我只想对可见的单元格进行计算,并立即显示可见的单元格。然后,其他单元格的计算应在后台进行。还有一件事,我只会为每个单元格计算一次。一旦我这样做了,我将把值存储在数组中。下次

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

请任何人帮我做这件事。。。我只是想知道这是否可能?如果是,实现的程序是什么


提前感谢…

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

您可以通过以下方式在UITableViewController中检索可见单元格:

[self.tableView indexPathsForVisibleRows]
然后可以对可见单元格进行处理。e、 g

for (NSIndexPath *path in paths ) {
// do some processing in [self.tableView cellForRowAtIndexPath:path]
}
我为1000多行做了相同的自定义视图,为每个单元格使用自定义drawrect,并使用上面的方法来优化单元格的加载。我的处理仅在ff期间进行:

  • 加载时(viewDidLoad),更新可见单元格

  • 当用户停止滚动时(滚动时默认为空白)


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

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