0

現在のセルの高さを設定するときに、以前の UITableViewCell の高さを変更できる方法はあります- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPathか?

に 2 つの行がありUITableViewます。最初の行では、デフォルトの高さが設定されます。2 行目では、最初の行の高さを変更したいと思います。これは可能ですか?もしそうなら、どのように?

ありがとう、
バラティ。

4

3 に答える 3

1

要件が満たされているかどうか、ブール値のチェックを使用してみてください。次のようにできます。

-(CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath  { 

    if (indexPath.row == 0 && !secondRowIsSynced) {
        return otherHeight ;
    }
    else {
        return defaultHeight;
    }
}
于 2012-08-06T12:50:06.723 に答える
0

バラティ:

didSelectRowAtIndexPathの方法でテーブルをリロードする必要がありますUITableView

2 番目の行が選択されていることを確認してから、すべてのテーブル行をリロードして、すべてのメソッドtableview delegatedatasourceメソッドが再度呼び出されるようにする必要があります。

于 2012-08-06T12:37:47.720 に答える
0

が複数回呼び出されると誤解していると思いますtableView:heightForRowAtIndexPath:(テーブルの行ごとに1回)。

行の高さが異なる場合は、現在の行とその高さを決定する必要があります。

- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath;
{
    CGFloat height;

    if (0 == indexPath.row) {
        // This is the first row 
        height = // what ever you want
    } else if (1 == indexPath.row) {
        // This is the second row 
        height = // what ever you want
    }

    return height;
}

後で行を異なる高さにする必要があると判断した場合でも、各行に使用する正しい高さを計算する必要があるのはこのメソッドです。このようにtableViewをリロードせずにこれを強制的に呼び出すことができます

[tableView beginUpdates];
[tableView endUpdates];
于 2012-08-06T13:20:49.333 に答える