我有点奇怪的问题。我已经为我的表格单元设置了一个具有自定义高度的UITableView设置。当内容加载到单元格的后台时,问题就出现了。我需要尽可能地加载单元格,但是每个单元格都需要一个大图像,这可能需要一些时间来加载(从网络或闪存),因此当首次加载单元格时,负载将在后台启动。这意味着单元的高度最初是错误的,需要稍后更新,并且最小的故障。我遇到的问题是它并不总是想要更新表格或图像,并且可能导致一些过度滚动。
这也非常慢。我需要进行一些优化以使其慢一点(制作主图像的较小副本,并临时缓存单元格的高度)。
我尝试过各种各样的事情。我确保在主线程中告知表更新,我尝试了一组openUpdates / endUpdates,reloadRows / reloadSections(表是分组模式,每个部分有一行)。一旦图像加载完毕,我还没有让表格正确更新。
如果有人对如何尽可能顺利地开展工作有所了解,我会很感激。
答案 0 :(得分:1)
要去的地方是heightForRowAtIndex:
方法。它需要知道图像是否存在并相应地返回一个值。每次每行完成加载它的图像时,你应该调用reloadRows~方法,如下所示:
NSArray *indexPaths = [NSArray arrayWithObject:[NSIndexPath indexPathForRow:x inSection:y]];
[self.tableView reloadRowsAtIndexPaths:indexPaths withRowAnimation:UITableViewRowAnimationFade];
我不完全确定这是否会导致你的tableView上出现一些沉重的滚动,但这是一个选项。
另一种选择是以块的形式更新。假设每个5-10个图像(取决于您拥有的数量)使用相同的方法重新加载它们各自的行。