1

Interface Builderでカスタムセルを設定した値に基づいて、セルの高さを動的に設定しようとしていました。これはうまくいかなかったので、先に進み、セルの高さを設定するために使用できる Apples ドキュメントでこのメソッドを見つけました - tableView:heightForRowAtIndexPath:

ただし、どのテーブルビューセルも高さを調整していないため、正しく使用しているかどうかはわかりません。それらはすべて同じ標準サイズのままです。これは私がここで使用しているコードです。

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
    static NSString *CellIdentifier = @"Cell";
    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];

    // Set cell height
    [self tableView:tableView heightForRowAtIndexPath:indexPath];

    // Configure the cell using custom cell
    [[NSBundle mainBundle] loadNibNamed:@"CustomcellA" owner:self options:nil];
    cell = customcellA; // customcellA getters and setters are set up in .h

    return cell;
}

- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath
{
    return 44;
}

どんな助けでも大歓迎です

4

2 に答える 2

7

3 番目のセルの高さが 2 倍であるとします。

- (CGFloat)   tableView:(UITableView *)tableView
heightForRowAtIndexPath:(NSIndexPath *)indexPath
{
    if(indexPath.row == 2)
        return 88;
    return 44;
}

このメソッドは、tableView によって呼び出されます。

これを行うべきではありません:

[self tableView:tableView heightForRowAtIndexPath:indexPath];

正しいセルの indexPath が他のサイズに対して識別されることをどのように保証するかは、あなた次第です。

一般的な規則:
デリゲート プロトコルのメソッドを実装する場合、自分で呼び出すことは決してありません。プロトコルに準拠するデリゲートを持つクラスのオブジェクトのみが、デリゲート メソッドを呼び出します。

于 2012-05-16T21:49:16.990 に答える
0

heightForRowAtIndexPath は自動的に呼び出され、必要なカスタムの高さを返す必要があります。したがって、44 を返すのではなく、データまたは高さの基になっているものに基づいて動的な高さを返す必要があります。

于 2012-05-16T21:46:08.723 に答える