UITableViewCell セルの再利用の問題

設定画面に他の自作アプリ情報を加えたりしようと思い、UITableViewController で1行だけセルの高さを変更したり、画像を追加したりしたところ、スクロールするとおかしな表示になってしまう。
おかしいので調べていたところ、セルの再利用により再利用できないものを再利用してしまっていたらしい。具体的には、dequeueReusableCellWithIdentifierなどに渡すstaticなCellIdentifier をセルごとに変えるべきだったところを同じにしてしまっていたためだった。

iPhoneのオモチャ箱 P299によると、下記の要素が異なる場合、異なるものとして定義する必要がある。

  • UITableViewCellStyle
  • 画像の有無
  • 各テキストの有無
  • 画像の幅、高さ
  • セルの高さ
  • 背景の色
  • テキストのフォントの設定
  • アクセサリービューの種類

これによると、結構こまめに変えないといけないようだ。今までよくこれを知らないで実装できていたものだ。

自分の場合のように、行数が少なくてReuseするほどでもなければ、dequeueReusableCellWithIdentifier をしないという手もある。
これにより、本当は流用できない行を流用してしまう問題を回避することができる。

iPhoneのオモチャ箱には非常に丁寧に詳しくUITableViewの使い方が書かれている。

iPhoneのオモチャ箱 iPhone SDKプログラミング
iPhoneのオモチャ箱 iPhone SDKプログラミング 徳井 直生 岡村 浩志 笠谷 真也 深津 貴之 青木 太臣 大宮 聡之 瀬尾 浩二郎 バスケ 宮川 義之

ワークスコーポレーション 2010-06-22
売り上げランキング : 81009

おすすめ平均 star
star誤字が多い
stariPhoneのオモチャ箱

Amazonで詳しく見る by G-Tools

返信を残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

This site uses Akismet to reduce spam. Learn how your comment data is processed.