0
我有处理设备地址簿的表,该表可以轻松地有500多个联系人。 除了表得到更新,每3秒钟,然后在每次更新运行代码有很多行的UITableView性能
[tableContacts beginUpdates];
[tableContacts reloadRowsAtIndexPaths:arr withRowAnimation:UITableViewRowAnimationNone];
[tableContacts endUpdates];
,我更新的小区和一个图像(存在)的文本。 单元格的所有计算都是后台线程上的句柄。问题是大多数时候滚动不够流畅。 当我触摸表开始滚动然后滚动没有响应1秒左右(我认为是因为表刷新在这个时间)。
所以问题是如何处理非常长的表在短时间内获取数据并需要刷新?
我猜对于UITableView的工作原理存在误解。方法'cellForRowAtIndexPath'总是创建一个新的单元格(可能重复使用一个循环的单元格)。它永远不会返回现有的表。它只被'UITableView'调用。如果您自己调用它,则会创建一个永不显示的新表格单元格。 – Codo
没有误解。在tableView之外调用'cellForForRowAtIndexPath'创建和显示循环为您提供现有单元格的引用,如果单元格已创建并显示。我同意,如果'indexPath'在'indexPathsForVisibleRows'数组内,这需要额外的检查。无论如何 - 如何在不重新加载行的情况下从NSFetchedResultsControllerDelegate方法(或任何其他更新方法)更新单元格的属性? –