0

CustomCellを使用してUITableViewいます。CustomCellに追加しましUIImageUILabel。...しかし、行1のセルを選択して削除UIImageすると[[cell.contentView viewWithTag:TAG_FOR_TOPIMAG]removeFromSuperview];、インデックス7のセルが同じセル1に変更されました。

4

1 に答える 1

0

テーブルビューはセルを再利用します(dequeueReusableCell ...)。
したがって、同じセル(ビュー)がテーブル内の複数のインデックスに使用される場合があります。
セルのレイアウトを変更(サブビューの追加/削除/変更)すると、このセル(ビュー)は、画面に表示されるたびに変更されて表示されます(毎回異なるインデックスを表す場合でも)。

たとえば、あなたの場合、画面上に同時に最大6つのセルが表示されている可能性があります。
したがって、一部のセルを変更し(変更するとインデックス1に表示されました)、テーブルをスクロールした後、インデックス1のセルが画面から消え、インデックス7のセルが表示されます(スクロール中)。テーブルは、インデックス1の行を表示するために使用されたのと同じセル(まったく同じUITableViewCellオブジェクト)を使用します。
ただし、テーブルから画像を削除しました...

テーブルを操作するときは、常にそれを覚えておく必要があります。
あなたの場合、画像ビューの可視性を非表示に設定し、各tableView"cellForRowAtIndexPath:メソッドで復元することをお勧めします(if (cell == nil)ステートメント内ではなく-その後)。

于 2013-01-01T15:20:48.137 に答える