我的方法tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath。
我的情景如下: 我在每个单元格中都有一些文本视图,因此我需要遍历单元格以获取最后一个textview的yPosition及其内容大小,以便配置该特定单元格的高度。
为了做到这一点,我使用了UITableViewCell * cell = [self tableView:tableView cellForRowAtIndexPath:indexPath];在heightForRowAtIndexPath方法中。它就是这样,它调用cellForRow并重新配置我的单元格的内容并返回给我。
然而,这是滞后问题发生的地方。由于heightForRow将在实际的cellForRow之前调用,这意味着我将两次调用cellForRow。一个在heightForRow中,以获取单元格,另一个在实际的cellForRow实现中。
请告知我需要做些什么才能避免这个滞后问题。谢谢。
答案 0 :(得分:1)
您应该使用-tableView:heightForRowAtIndexPath:
方法计算行高,方法是调用-[NSString sizeWithFont:forWidth:lineBreakMode:]
或其他类似的API,并为其添加任何填充高度。
无论你在-tableView:heightForRowAtIndexPath:
执行此操作的速度有多快,与tableView.rowHeight
相比仍然会受到惩罚。
答案 1 :(得分:0)
您永远不应该自己调用表视图委托方法。您可以告诉表视图使用以下代码重新加载其数据:[tableview reloadData];