2

UITableView(スタイル: グループ化)を持つ xib がありUITableViewCells、アウトレット コレクションとして接続された xib にもいくつかあります。

Table View Programming Guide (The Technique for Static Row Content)tableView:cellForRowAtIndexPath:で説明されている方法と非常によく似た方法で、これらのセルを から返します。

次にIBOutlet、高さが異なる別のセルと、フラグを切り替えて常に同じ行をリロードするボタンがあります ( reloadRowsAtIndexPaths:withRowAnimation:)。

cellForRowAtIndexPathその正確な行の場合、アウトレット コレクションからの通常のセルのいずれか、またはその特別なセル (フラグに応じて) のいずれかが返されます。

heightForRowAtIndexPathまた、適切なセルの高さを取り、同じ「ロジック」を使用してそれを返します。

ボタンを押すたびに、最初と最後の行の高さが 1 ピクセルずつ追加されます。誰が何が起こっていると思いますか?

これだけのサンプル プロジェクトをアップロードしました: http://www.mediafire.com/?sc22v0c6w11b4l6

4

2 に答える 2

1

交換:

return (UIView *)[self.cells objectAtIndex:indexPath.row] bounds].size.height;

return 30;

問題を修正します。

大きなセルを再描画するとテーブル全体のサイズが変更され、何らかの理由で最初と最後のセルがより大きなサイズに再計算されると思います。

于 2012-09-03T11:43:50.247 に答える
0

この問題は、tableViewStyle がグループ化されている場合にのみ発生します...したがって、プレーン スタイルを使用するか、ハードコード値を返すことができます

if (indexPath.row == kBigCellRowNum && self.showTheBigCell){

    return self.bigCell.frame.size.height;

}

else{

    return 44;

}
于 2012-09-03T11:50:27.113 に答える