UITableView动态单元格高度 - 单行重新加载高度

时间:2014-07-17 08:04:03

标签: ios objective-c uitableview ios7 ios8

我有一个UITableView,其中包含动态高度行,其中许多都包含UITextViews。当用户开始键入其中一个textview时,我使用begin / endUpdates方法使单元格增长以适应textview内容的大小。使用此方法允许单元格调整大小而不会失去键盘焦点在textview上,这是我的应用程序的一个重要方面。

但是,当我调用begin / endUpdates时,它会重新加载我拥有的每个单元格的高度,我想知道是否有任何方法只能在用户键入时重新计算特定indexPath上单元格的高度。我想这样做是因为我对其他单元格的高度计算起来很昂贵,因为它们具有动态内容。我知道我可以编写一些高度缓存代码,但我想知道是否有任何方法只能重新计算UITableView中特定单元格或单元格集的高度而不会丢失键盘焦点/重新加载该行的数据内容?

我正在使用ios8,但会使用ios7 / 8解决方案。

2 个答案:

答案 0 :(得分:1)

创建NSIndexPath数组。如果只有一个indexPath,只需将其添加到数组中,并使用此方法:

 [self.tableView reloadRowsAtIndexPaths:[NSArray *array] withRowAnimation:UITableViewRowAnimationAutomatic];

但我认为这种方法,也会隐藏键盘,从未尝试过。

答案 1 :(得分:1)

似乎只有一行可以做到这一点。我最终建立了一个行高的缓存系统,这样至少可以更快地返回所有单元格的高度。