UITableView和heightForRowAtIndexPath偶尔会出现问题

时间:2013-04-09 12:41:14

标签: ios uitableview

我有一个UITableView,其中包含动态更新高度的行。我有以下方法作为UITextView的每个单元格中的UITextView的委托:

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

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

2 个答案:

答案 0 :(得分:1)

发现问题。有一个虚假的[table endUpdates];在方法中隐藏调用。这显然使[table beginUpdates]; [table endUpdates];以某种方式失去同步。现在感觉更快乐。

答案 1 :(得分:0)

answer可能会对您有所帮助,但一般情况下heightForRowAtIndexPath会在首次显示该单元格或调用reloadRowsAtIndexPaths:withRowAnimation时调用indexPath。然而,从单元格进行调用可能很尴尬,因为单元格不知道它的indexPath,但您可以使用indexPathForCell:调用来获取{{1}}。