2012-03-01 6 views
0

これしかし私は私がセルの一意の識別子を使用しなければならない時に理解したい、UITableView dequeueReusableCellWithIdentifierが一意であるかどうか

のiOS DEVに新たなんだといないとき

の多くで実際に
- (id)dequeueReusableCellWithIdentifier:(NSString *)identifier 

ため、初心者の質問に聞こえるかもしれません識別子が一意でないコードスニペットを満たした場所。

私の練習では、UITableViewCellsの順序を保持するためにユニークな識別子を使用しました。それ以外の場合は、UITableViewを上下にスクロールしたときに順序が混ざりました。

再利用可能なセルの概念を理解するのを手伝ってください。各セルに固有の識別子が付いてはいけませんか?あなたが唯一の細胞の種類ごとに異なる識別子を使用する必要があり、事前に

おかげで、

答えて

0

私は私の質問に答えていると思います。アーロンの質問に感謝します。 私は常に、同じビュー内で各セルを1回だけ初期化しようとします(もちろん、そのビューで編集されていない場合)。パフォーマンスを向上させ、テーブルビューのスクロールをスムーズにするために、これを行います。 違いは - 今はどのように動作するか知っています。私が正しいとすれば、セル識別子はセルをユニークに保ちます。この方法では、その情報をキャッシュし、それを正しい場所に置く(ユニークな識別子のために)のようなことを行います。

ありがとう!

2

。テーブルビューに異なるクラスのセルがある場合、これは問題の可能性があります。または、セルにセルごとに異なるサブビューをセルに追加しました。

識別子を使用する場合は、セルには以前にレンダリングされたセルデータのデータが含まれている可能性があるため、そのデータを上書きする必要があります。最も簡単な場合はcell.textLabel.textです。

+0

私はすべてのセルに同じタイプを使用し、セルのサブビューは同じタイプです。私。すべてのセルに1つのイメージラベルと3つのテキストラベルがあります。これらの部分はすべて空ではありません。しかし、私はまだスクロールした後に混合細胞を持っています。 – jackal

+2

@ジャック: 'tableView:cellForRowAtIndexPath:'では、たびにすべてのラベルと画像に正しい値を割り当てますか?デキューしても、それらを設定する必要があります。 – Aaron

+0

@ジャックル:アーロンが言っていることを確認してください。また、あなたのモデルの機能かもしれません。データはどのように保存されていますか?ソート順が一貫していますか? – sosborn

0

常に、同じビューで各セルを1回だけ初期化してください。パフォーマンスを向上させ、テーブルビューのスクロールをスムーズにするために、これを行います。違いは - 今私はそれがどのように動作するか知っています。私が正しく理解すれば、セル識別子はセルをユニークに保ちます。この方法では、その情報をキャッシュして適切な場所に配置します。

関連する問題