用sizeWithFont方法的神秘麻烦

时间:2012-01-14 21:06:13

标签: iphone ios xcode uitableview nsstring

人。 我有UITableView与不同的单元格,我有代码,计算高度。在一个项目中,它工作得很完美,但在第二个项目中它返回高度等于0。 可能是什么导致了这个? 我的代码:

- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath {
    UITableViewCell *cell = [self tableView:tableView cellForRowAtIndexPath:indexPath];
    CGFloat cellWidth = 320.0f;
    CGSize size = [cell.textLabel.text sizeWithFont:cell.textLabel.font constrainedToSize:CGSizeMake(cellWidth, CGFLOAT_MAX) lineBreakMode:cell.textLabel.lineBreakMode];
    CGFloat height = size.height;
    NSLog(@"Height: %f", height);
    return height;
}

1 个答案:

答案 0 :(得分:3)

heightForRowAtIndexPath:委托方法之前调用cellForRowAtIndexPath:委托方法。在您的代码中,您正在根据cell.textLabel.text计算单元格高度,但单元格中的文本尚未设置。

您需要从表格单元格以外的其他位置获取此方法中使用的文本(可能您可以从在cellForRowAtIndexPath中设置textlabel.text值时从中获取文本)。