配置表格单元格的动态高度

时间:2012-08-03 03:35:42

标签: iphone objective-c ios5

我的方法tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath。

我的情景如下: 我在每个单元格中都有一些文本视图,因此我需要遍历单元格以获取最后一个textview的yPosition及其内容大小,以便配置该特定单元格的高度。

为了做到这一点,我使用了UITableViewCell * cell = [self tableView:tableView cellForRowAtIndexPath:indexPath];在heightForRowAtIndexPath方法中。它就是这样,它调用cellForRow并重新配置我的单元格的内容并返回给我。

然而,这是滞后问题发生的地方。由于heightForRow将在实际的cellForRow之前调用,这意味着我将两次调用cellForRow。一个在heightForRow中,以获取单元格,另一个在实际的cellForRow实现中。

请告知我需要做些什么才能避免这个滞后问题。谢谢。

2 个答案:

答案 0 :(得分:1)

您应该使用-tableView:heightForRowAtIndexPath:方法计算行高,方法是调用-[NSString sizeWithFont:forWidth:lineBreakMode:]或其他类似的API,并为其添加任何填充高度。

无论你在-tableView:heightForRowAtIndexPath:执行此操作的速度有多快,与tableView.rowHeight相比仍然会受到惩罚。

答案 1 :(得分:0)

您永远不应该自己调用表视图委托方法。您可以告诉表视图使用以下代码重新加载其数据:[tableview reloadData];