iOS8改变动态单元的高度"现在",重新内部单元格内容

Fat*_*tie 5 uitableview ios ios-autolayout

这是一个动态细胞

在此输入图像描述

注 - 在示例中,文本不是数据驱动的.它只是单元格的一些文本(例如,考虑帮助文本).在运行时,使用单元格内的实际按钮,将UILabel的.text从一个单词更改为多行.iOS正确调整单元格和表格的大小....

...但仅当单元格在屏幕外滚动,然后再次打开时.

如何提醒表视图重新计算"现在"的所有内容?


(请注意,此问题仅适用于iOS8 +,Xcode7 +,动态单元格高度的自动布局.)

Rob*_*Rob 1

我假设您没有设置内部text的属性,而是在其他地方设置(或异步执行)。如果是这样的话,我不会在那里更新用户界面。相反,我会更新支持该表的模型,然后调用. 这将让我们再次调用,但与重新加载整个表不同,这将优雅地将表视图保持在原来的位置。UILabelcellForRowAtIndexPathreloadRowsAtIndexPathscellForRowAtIndexPathcontentOffset

我知道这一切听起来不必要地复杂,但底线是你不拥有这个视图,表视图拥有。它必须做除更新单元之外的各种事情。即,如果单元格增长,找出哪些单元格滚动到视野之外并将它们出队。如果单元格缩小,请找出哪些单元格因此滚动到视图中。

这是一种极其复杂的舞蹈。您可以尝试调用setNeedsLayout该单元,但我不认为这会起作用(即使它起作用,这也是一种脆弱的方法)。表视图负责管理其单元格,因此如果您确实应该更新模型并重新加载该单元格。