2012-01-14 8 views
0

人です。 私は異なるセルを持つUITableViewを持っており、高さを数えるコードを持っています。 1つのプロジェクトでは完璧に動作しますが、2番目のプロジェクトでは高さは0に戻ります。 何が原因でしょうか? マイコード:heightForRowAtIndexPath:デリゲートメソッドがcellForRowAtIndexPath:デリゲートメソッドの前に呼び出されるサイズに不思議なトラブルがあります。方法は

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

。あなたのコードでは、cell.textLabel.textに基づいてセルの高さを計算していますが、セルのテキストはまだ設定されていません。

このメソッドで使用するテキストをテーブルセル以外の場所から取得する必要があります(おそらく、cellForRowAtIndexPathにtextlabel.text値を設定したときに取得する場所から取得できます)。

+0

正解の場合+1 - 最初にheightForRowAtIndexPathが呼び出された後、cellForRowAtIndexPathが呼び出されます。なぜOPがこの仕事を見たのか、これまでに私には謎が残っています。 – Till

+0

ありがとう、私は、その問題は難しいと思った。 – werbary