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

Fou*_*urj 14 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];
Run Code Online (Sandbox Code Playgroud)

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

han*_*nno 27

尝试调用一个空的更新块:

[self.tableView beginUpdates];
[self.tableView endUpdates];
Run Code Online (Sandbox Code Playgroud)

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

  • 我用空的开始/结束块替换了我的[self.tableView reloadSections:xxxx],它解决了我的问题.当我将IndexPath的高度调整为0时,我原本看到几个单元出现在错误的时间.这解决了它,我不确定为什么.谢谢! (2认同)

Bra*_*Guy 5

在执行reloadData时,实际上会再次调用heightForRowAtIndexPath:(可以设置一个断点进行验证)。您需要做的就是在其中放置所需的条件逻辑。