2012-01-14 54 views
0

伙计。 我有UITableView与不同的单元格,我有代码,它计数高度。在一个项目中,它完美的工作,但在第二个它返回高度等于0. 这可能是什么原因造成的? 我的代码:与sizeWithFont方法的神秘麻烦

- (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; 
} 

回答

3

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

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

+0

对于正确的答案 - 第一个heightForRowAtIndexPath被调用,然后是cellForRowAtIndexPath。为什么OP已经看到这个工作以前仍然是一个谜。 – Till 2012-01-14 21:28:40

+0

谢谢,我想,这个问题更难。 – werbary 2012-01-15 08:21:45