如何在加载tableView后更新UITableViewCell高度

时间:2014-05-06 06:49:58

标签: ios objective-c uitableview

自定义UITableViewCell包含一个从Web异步加载的图像,并且其大小/ aspectRatio事先未知,因此无法在tableView:heightForRowAtIndexPath:中返回准确的单元格高度。

我可以在委托方法中返回估计的高度,但需要在加载图像时通知tableView单元格高度的变化。我该怎么做?

  1. reloadData太重了,考虑到每次加载图像时,整个tableView都会刷新。
  2. reloadRowsAtIndexPaths:withRowAnimation:也不好。由于细胞本身没有变化,只需要更新其高度。

3 个答案:

答案 0 :(得分:3)

希望除了[self.tableView reloadData];之外你没有任何其他选择,无论如何不会重新加载所有数据 - 它只是重新加载可见的单元格。

答案 1 :(得分:1)

重新加载可见的表格单元格 - 是最好的一个。否则每次你需要完全重新加载表视图,然后它会把你放在第一个单元格上。然后以编程方式你应该向下滚动特定的被访问的cell.it是痛苦的事情。没有一个良好的用户界面。

    [YourTableView reloadRowsAtIndexPaths:[YourTableView indexPathsForVisibleRows] withRowAnimation:UITableViewRowAnimationAutomatic];

仅重新下载完成单元格

    [YourTableView reloadRowsAtIndexPaths:[NSArray arrayWithObject:[NSIndexPath indexPathForRow:YourImageCompletelyDownloadRow inSection:0]] withRowAnimation:UITableViewRowAnimationAutomatic];

答案 2 :(得分:1)

您可以通过调用

轻松地重新加载表格
[tableview reloadData];

来自this回答:

UITableView类永远不会加载单元格,直到它们即将出现在屏幕上,即使你调用reloadData也是如此。

因此只会重新加载可见的单元格。