如何从NIB读取UITableViewCell(子类)的高度?

时间:2011-11-22 09:00:28

标签: ios

我在NIB中定义了一个UITableViewCell(实际上是一个子类)。在NIB中,我将帧高设置为183,我还将“行高”设置为183并勾选了自定义。

在我原来的问题中,这里的一切都出了问题。看起来我的背高度错了,细胞装在错误的高度,然后调整到合适的高度,造成一个令人讨厌的视觉故障。

实际上我做了一些愚蠢的事情(而且总是回到错误的高度),而且我已经太晚了才弄明白,所以我求求帮助然后去睡觉。睡眠(+咖啡)使一切都清晰。

因此,对于记录,如果从NIB加载自定义UITableViewCell,您可以查看frame.size.height并返回正确的数字。

如果你从tableView:heightForRowAtIndexPath:返回错误的数字,你可能会遇到这个故障,至少如果错误的单元格是表格中的最后一个(我预计问题将以另一种方式表现给其他单元格)

所以我已经解决了我自己的问题,并希望为其他任何人提供足够的信息。如果有人认为这应该有正式答案,请放心,我计划在一天或三天内接受最好看的一个。

2 个答案:

答案 0 :(得分:9)

您可以使用此示例代码从NIB获取单元格高度

- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath 
{
    return [[[[NSBundle mainBundle] loadNibNamed:@"ELConvCurListViewCell" owner:self options:nil] objectAtIndex:0] bounds].size.height;
}

更新:您可以在viewDidLoad cellHeight变量和heightForRowAtIndexPath使用{{1}中获取和分配NIB的高度}

答案 1 :(得分:3)

第一个被调用的UITableViewDelegate方法是heightForRowAtIndexPath而不是UITableViewDataSource方法,cellForRowAtIndexPath。

您只能在cellForRowAtIndexPath中获取自定义单元格高度,您可以在其中为该单元格分配init。因此,它不会考虑自定义单元格高度。

它将采用heightForRowAtIndexPath方法中提到的单元格的高度。因为它首先被调用。

相关问题