1

我有一个 UITableView 与动态更新其高度的行。我有以下方法作为 UITableView 的每个单元格中的 UITextView 的代表:

-(void)textViewDidChange:(UITextView *)textView
{
[self resizeRow];
[self setNeedsDisplay];
[table beginUpdates];
[table endUpdates];
}

当文本添加到文本视图时,此方法适用于更新表格视图行高。当我更新单元格中的 UIImageView 以增加其大小时,我的问题就出现了。这需要调整表格单元格的高度,这可以正常工作,但是从那时起,每当[table begineUpdates] [table endUpdates]调用块时,heightForRowAtIndexPath表格视图就不再被调用。我没有收到任何错误或警告,也不知道代码中的其他位置。我的问题是,heightForRowAtIndexPath当调用块时应该始终调用,[table begineUpdates] [table endUpdates]或者是否存在这种情况不会发生的情况,如果是,它们是什么?

4

2 回答 2

1

发现了问题。有一个虚假的[table endUpdates];调用隐藏在方法中。这显然[table beginUpdates]; [table endUpdates];在某种程度上变得不同步。现在感觉幸福多了。

于 2013-04-10T13:00:10.767 回答
0

答案可能会对您有所帮助,但通常heightForRowAtIndexPath会在首次显示单元格时或调用时调用一次reloadRowsAtIndexPaths:withRowAnimation。但是,从单元格发出该调用可能会很尴尬,因为该单元格不知道它的indexPath,但您可以indexPath使用对 的调用来获得indexPathForCell:

于 2013-04-09T14:34:33.810 回答