是否可以在不使用UITableViewDelegate的情况下调整UITableViewCell的大小?

时间:2009-09-21 17:15:08

标签: iphone uitableview

我想从单元格内部而不是UITableViewDelegate调整表格视图单元格的大小。我正在根据异步内容调整它们的大小,所以我不能在委托中调整它们的大小。

我尝试在单元格内设置self.frame,但表格视图对此非常不满意。细胞重叠,各种疯狂都在发生。

3 个答案:

答案 0 :(得分:5)

您只需使用表格视图来控制高度。您可以通过使用删除然后重新添加特定单元格的调用来告知表格已更改单元格,因此您不必重新加载整个表格 - 但必须使用委托回调tableView:heightForRow获取高度: atIndexPath:

我不明白为什么这不实用。您可以运行任意数量的异步系统来更新由表视图委托保存的中央高度缓存 - 每次创建单元格时,您都可以将委托作为参考分配给它,这样它就可以与表格进行对话并让它它知道细胞需要重新加载以及新的高度。

如果你考虑一下,可怜的表格视图就是一个滚动视图,它必须管理所有这些单独的单元格并将它们视觉保持在一起 - 所以它真的是一个不流行的单元格去流氓并开始改变框架而不让表格查看知道发生了什么事。最好让桌子开车并告诉它该怎么做。

答案 1 :(得分:1)

如果不使用UITableViewDelegate,则无法设置单元格的大小。通过实际更改单元格的大小来更改单元格的大小,但不会更改UITableView绘制单元格的偏移量。这将导致重叠,并在整个地方出现空白。

您的朋友是tableView:heightForRowAtIndexPath:,它应该。如果覆盖它,那么表视图就不能再假设所有行都具有相同的高度。因此,每次获取要绘制的单元格时,它必须查询所有行的高度。

答案 2 :(得分:0)