2012-01-14 65 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