我使用的是自定义UITableViewCell,它有一些标签。单元格中有一个标签,其中字符串长度是可变的,因此我无法在heightForRowAtIndexPath方法中为单元格设置恒定高度。我不想将计算逻辑从我的自定义单元格放入表委托。
答案 0 :(得分:8)
-heightForRowAtIndexPath:
是您设置它的地方。我知道把这个逻辑放在tableview委托中有点难看,但不能在单元格中完成。
考虑一下,tableview必须知道单元格的高度,然后才能实例化单元格,以便计算滚动条的长度(这是成比例的)。这意味着您无法计算单元格本身中单元格的大小,因为必须在实例化单元格之前很好地了解单元格的大小。
换句话说,你不能在单元格中设置行高,因为如果用户没有滚动到它们,tableview需要知道它永远不会实例化的单元格的高度。
答案 1 :(得分:3)
如何在单元类上定义类方法来进行计算?您可能仍需要将一组信息从委托传递到单元类(如模型对象或某些内容),并且您可能必须复制单元格layoutSubviews
或drawRect:
中的某些代码。 ,但至少所有的逻辑都存在于细胞类中。
在您的委托中,您可以将您将索引路径转换为单元类所需的任何逻辑分解为自己的方法,可以从heightForRowAtIndexPath:
和cellForRowAtIndexPath:
调用。