【发布时间】:2009-11-07 16:34:20
【问题描述】:
我正在使用一个自定义 UITableViewCell,它有一些标签。单元格中有一个标签,其中字符串长度是可变的,因此我无法在 heightForRowAtIndexPath 方法中为单元格设置恒定高度。我也不想将自定义单元格中的计算逻辑放入表委托中。
【问题讨论】:
标签: iphone uitableview
我正在使用一个自定义 UITableViewCell,它有一些标签。单元格中有一个标签,其中字符串长度是可变的,因此我无法在 heightForRowAtIndexPath 方法中为单元格设置恒定高度。我也不想将自定义单元格中的计算逻辑放入表委托中。
【问题讨论】:
标签: iphone uitableview
-heightForRowAtIndexPath: 是您可以设置它的地方。我知道把这个逻辑放在 tableview 委托中有点难看,但不能在单元格中完成。
考虑一下,tableview 必须在实例化单元格之前知道单元格的高度,以便计算滚动条的长度(成比例)。这意味着您无法计算单元格本身的单元格大小,因为必须在单元格被实例化之前就知道单元格的大小。
换句话说,您不能在单元格中设置行高,因为 tableview 需要知道如果用户不滚动到它们将永远不会实例化的单元格的高度。
【讨论】:
如何在你的单元类上定义一个类方法来进行计算?您可能仍然需要将大量信息从委托传递给单元类(例如模型对象或某些内容),并且您可能必须从单元的 layoutSubviews 或 drawRect: 中复制一些代码,但至少所有逻辑都存在于单元类中。
在您的委托中,您可以将任何需要的逻辑分解为单元类的索引路径,并将其转换为它自己的方法,可从heightForRowAtIndexPath: 和cellForRowAtIndexPath: 调用。
【讨论】: