0

我有处理设备地址簿的表,该表可以轻松拥有 500 多个联系人。此外,表格每 3 秒更新一次,然后运行代码

[tableContacts beginUpdates];
[tableContacts reloadRowsAtIndexPaths:arr withRowAnimation:UITableViewRowAnimationNone];
[tableContacts endUpdates];

每次更新时,我都会更新单元格上的文本和一个图像(存在)。单元格的所有计算都是后台线程上的句柄。问题是大多数时候滚动不够流畅。当我触摸表格开始滚动时,滚动没有响应 1 秒左右(我认为是因为此时表格正在刷新)。

所以问题是如何处理很长的表,这些表在短时间内获取数据并需要刷新?

4

1 回答 1

0

有一个简单的方法和正确的方法,但无论如何 - 不要重新加载行。通过获取单元格[self.tableView cellForRowAtIndexPath:]并更改其属性,这是第一次。然后,在你的桌子上做一些关于强制更新的事情。

你的表的实际数据源是什么?是NSFetchedResultsController吗?是控制器内的NSArray吗?在任何情况下,您都应该只更新具有新数据的单元格。如果您使用 CoreData,请使用NSFetchedResultsControllerDelegate方法。对于NSArray我建议 KVO - 观察数组中更改的对象。

于 2012-06-03T14:13:36.397 回答