我正在开发类似Twitter的客户端,并且有一个由UITableView实现的消息列表视图。对于每个单元格,可能需要加载动态大小的图像,并且图像加载为异步。因此,在加载表视图时,图像的大小是未知的。
加载图片后是否可以更新uitableviewcell的高度。
据我所知,更新高度的唯一方法是使用此方法: - (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath 但它是在第一次加载数据时调用的。从性能考虑来看这是合理的。无论如何,以后有办法改变高度吗?
感谢您的任何信息!
最后,我使用“reloadRowsAtIndexPaths”来更新特定的行,你可以尝试这个隐藏的单元格。
[self.tableView beginUpdates];
[self.tableView reloadRowsAtIndexPaths:toReloadRows withRowAnimation: UITableViewRowAnimationNone];
[self.tableView endUpdates];
但是,当更新可见细胞的高度时,细胞会抖动。因此,最好先计算细胞高度。
答案 0 :(得分:27)
尝试调用空的更新块:
[self.tableView beginUpdates];
[self.tableView endUpdates];
这似乎适用于可见细胞。我仍然在与隐藏的细胞斗争。
答案 1 :(得分:4)
heightForRowAtIndexPath:在执行reloadData时实际上再次被调用(您可以设置要验证的断点)。您需要做的就是将所需的条件逻辑放在那里。
答案 2 :(得分:-4)
[tableView reloadData];
会做你想要的。它将重新加载整个表datasource
。所以你可以相应地设置rowHeight