在运行时通知UITableView已更改的UITableViewCell高度

时间:2015-05-18 19:42:15

标签: autolayout uikit reactive-cocoa

我有一个tableView哪些行'高度是使用UITableViewAutomaticDimension和IB的AutoLayout约束动态计算的。

我在每个单元格中都有一个绑定到ReactiveCocoa MutableProperty的标签,以便每次更改时都会更新。

文本更改通常也会超出现有单元格,我似乎无法找到通知UITableView应重新计算单元格高度的方法。

enter image description here

使用tableView.reloadRowsAtIndexPaths([indexPath], withRowAnimation: .Automatic)tableView.reloadData()不是一种选择,因为它远非侵入性,除非明确管理,否则可能导致循环......

有没有办法只传达最少的信息"请更新这个UITableViewCell"的高度,而不丢弃该单元格?

cell.setNeedsLayout()似乎不够。

1 个答案:

答案 0 :(得分:2)

根据this answer,在UITableViewCell添加到表格视图后可靠地调整大小的唯一方法,以及Apple建议的方法,是调用以下两种方法:

[tableView beginUpdates];
[tableView endUpdates];