0

我有一个奇怪的问题。我已经为表格单元格设置了自定义高度的 UITableView 设置。当内容在单元格的背景中加载时,问题就出现了。我需要尽快加载单元格,但是每个单元格都有一个大图像,可能需要一些时间来加载(从网络或闪存),因此在首次加载单元格时在后台开始加载。这意味着单元格的高度最初是错误的,并且需要稍后以最小的故障进行更新。我遇到的问题是它并不总是想要更新表格或图像,并且可能会导致过度滚动。

它也非常慢。我需要做一些优化以使其速度降低一点(制作主图像的较小副本,并临时缓存单元格的高度)。

我已经尝试了各种各样的事情。我确保表被告知在主线程中更新,我尝试了一组 beginUpdates/endUpdates、reloadRows/reloadSections(表处于分组模式,每节一行)。图像完成加载后,我还没有让表格正确更新。

如果有人对如何使其尽可能顺利地工作有所了解,我将不胜感激。

4

1 回答 1

1

去的地方是你的heightForRowAtIndex:方法。它需要知道图像是否存在并相应地返回一个值。每次每行完成加载它的图像时,你应该像这样调用 reloadRows~ 方法:

NSArray *indexPaths = [NSArray arrayWithObject:[NSIndexPath indexPathForRow:x inSection:y]];
[self.tableView reloadRowsAtIndexPaths:indexPaths withRowAnimation:UITableViewRowAnimationFade];

我不完全确定这是否会导致您的 tableView 出现大量滚动,但这是一个选项。

另一种选择是分块更新。假设每 5-10 个加载的图像(取决于你有多少)使用相同的方法重新加载它们各自的行。

于 2012-11-23T17:45:53.673 回答