0

我对这个方法 tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath 有一些滞后问题。

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

为此,我使用了 UITableViewCell *cell = [self tableView:tableView cellForRowAtIndexPath:indexPath]; 在 heightForRowAtIndexPath 方法中。它确实如此,它调用 cellForRow 并重新配置我的单元格的内容并返回给我。

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

请就我需要做什么来避免这个滞后问题提出建议。谢谢你。

4

2 回答 2

1

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

不管你做的多快-tableView:heightForRowAtIndexPath:,与 相比还是有惩罚的tableView.rowHeight

于 2012-08-03T03:54:26.320 回答
0

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

于 2012-08-03T03:47:58.367 回答