首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >tableView.reloadData后如何改变uitableviewcell的高度

tableView.reloadData后如何改变uitableviewcell的高度
EN

Stack Overflow用户
提问于 2011-03-16 08:35:43
回答 3查看 15.7K关注 0票数 14

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

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

据我所知,更新高度的唯一方法是这个方法:- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath,但是它只是在第一次加载数据时调用。从性能考虑来看,这是合理的。不管怎样,有什么办法以后再改变高度吗?

谢谢你提供的任何信息!

最后,我使用"reloadRowsAtIndexPaths“来更新特定的行,您可以对隐藏的单元格进行尝试。

代码语言:javascript
复制
[self.tableView beginUpdates];
[self.tableView reloadRowsAtIndexPaths:toReloadRows withRowAnimation: UITableViewRowAnimationNone];
[self.tableView endUpdates];

但是,当更新可见单元格的高度时,单元格会抖动。所以最好先算出细胞的高度。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2011-03-16 08:38:56

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

票数 5
EN

Stack Overflow用户

发布于 2011-03-26 19:47:30

尝试调用一个空更新块:

代码语言:javascript
复制
[self.tableView beginUpdates];
[self.tableView endUpdates];

这似乎适用于可见细胞。我还在和隐藏的细胞做斗争。

票数 27
EN

Stack Overflow用户

发布于 2011-03-16 08:46:59

代码语言:javascript
复制
[tableView reloadData];

做你想做的事。它将重新加载整个表datasource。因此您可以相应地设置rowHeight

票数 -4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5322735

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档