0

ユーザーがセルをタップすると、詳細セルがそのすぐ下にドロップするテーブルがあります。これを実現するための使用方法を理解しましたinsertRowAtIndexPathが、詳細セルの行の高さは通常のセルよりも高くなっています。試しheightForRowAtIndexPathましたが、ビューを最初にロードしたとき(またはを使用したときreloadData)にのみ呼び出されるようです。ただし、テーブルビューのデータに詳細セルを追加したくないのでreloadData、可能性として排除されますheightForRowAtIndexPathUITableViewCellとしてサブクラス化されたカスタムがありますItemDetailCell。これにより、ストーリーボードの関連するセルから指定された行の高さが読み込まれる可能性があると思いましたが、機能していないようです。これは私が試した方法ですcellForRowAtIndexPath

if (indexPath.row == _detailCellIndexPath.row && _detailCellIndexPath) {
    NSLog(@"detailCell");

    ItemDetailCell *detailCell = [tableView dequeueReusableCellWithIdentifier:DetailCellIdentifier forIndexPath:_detailCellIndexPath];

    //customize cell

    return detailCell;
}
else {
    CustomCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier forIndexPath:indexPath];

    //customize cell

    return cell;
}

コンソールでが返さNSLog(@"detailCell")れるので、呼び出されていることはわかっていますが、それでもセルの高さは調整されません。

どんな助けでも大歓迎です!前もって感謝します。

4

1 に答える 1

1

heightForRowAtIndexPath後にも呼ばれます

[self.tableView beginUpdates];
[self.tableView endUpdates];

セルをバッキングコレクションに追加したくない理由はありますか?最も簡単な解決策は、テーブルビューのバッキング配列に特定のアイテムを追加し、その後、ブロックinsertRowAtIndexPath内を呼び出すことです。beginUpdates endUpdatesこれにより、標準のデリゲート/データソーステーブルビューメソッド(含まれている)がトリガーされるため、具体的なUITableViewCellクラス(または)heightForRowAtIndexPathに応じて異なるサイズを返すことができます。ItemDetailCellCustomCell

于 2013-01-08T23:50:34.357 に答える