如何在tableView.reloadData之后更改uitableviewcell的高度

时间:2011-03-16 08:35:44

标签: iphone uitableview

我正在开发类似Twitter的客户端,并且有一个由UITableView实现的消息列表视图。对于每个单元格,可能需要加载动态大小的图像,并且图像加载为异步。因此,在加载表视图时,图像的大小是未知的。

加载图片后是否可以更新uitableviewcell的高度。

据我所知,更新高度的唯一方法是使用此方法: - (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath 但它是在第一次加载数据时调用的。从性能考虑来看这是合理的。无论如何,以后有办法改变高度吗?

感谢您的任何信息!

最后,我使用“reloadRowsAtIndexPaths”来更新特定的行,你可以尝试这个隐藏的单元格。

[self.tableView beginUpdates];
[self.tableView reloadRowsAtIndexPaths:toReloadRows withRowAnimation: UITableViewRowAnimationNone];
[self.tableView endUpdates];

但是,当更新可见细胞的高度时,细胞会抖动。因此,最好先计算细胞高度。

3 个答案:

答案 0 :(得分:27)

尝试调用空的更新块:

[self.tableView beginUpdates];
[self.tableView endUpdates];

这似乎适用于可见细胞。我仍然在与隐藏的细胞斗争。

答案 1 :(得分:4)

heightForRowAtIndexPath:在执行reloadData时实际上再次被调用(您可以设置要验证的断点)。您需要做的就是将所需的条件逻辑放在那里。

答案 2 :(得分:-4)

[tableView reloadData];

会做你想要的。它将重新加载整个表datasource。所以你可以相应地设置rowHeight