Apple の iOSTableView
とセルの再利用は私を殺しています。検索して検索して勉強しましたが、良いドキュメントや良い答えが見つかりません。問題は、TableView
セルを再利用すると、選択したセルに設定されたチェックマーク (セル アクセサリ) のようなものが、テーブル ビューのさらに下のセルで繰り返されることです。メモリの制約により、セルの再利用が設計によるものであることは理解していますが、たとえば50個のアイテムを含むリストがあり、不要な場所に追加のチェックマークを設定し始めると、全体の努力が無駄になります.
やりたいことは、選択したセルにチェックマークを設定することだけです。私は独自のカスタム セル クラスと、ボイラー プレートの TableView クラスによって生成された標準セルを使用してこれを試しましたが、結果は常に同じです。
Apple には、開発センターからダウンロードできる TouchCell というサンプル プロジェクトもあります。これは、左側にイメージ コントロールがあるカスタム セルを使用してチェックマークを設定する別の方法を示すはずです。このプロジェクトでは、変更可能な配列の代わりにデータ ソースにディクショナリ オブジェクトを使用するため、各項目には文字列値とブール チェック値があります。この bool checked 値は、選択した項目を追跡できるようにチェックマークを設定することになっています。このサンプル プロジェクトでは、TableView に 15 個以上のセルを入力するとすぐに、この間抜けな動作も表示されます。セルを再利用すると、不要なチェック マークが設定され始めます。
各セルに真に一意のセル識別子を使用して実験してみました。各セルが @"Acell" のようなものを持つ代わりに、静的な int を使用し、文字列にキャストして、セルが @"cell1"、@"cell2" などになるようにしました。テーブルに 30 項目しかない場合でも、スクロール中に生成されます。
チェックマークの繰り返しの問題は修正されましたが、メモリ使用量が高すぎると思われます。
これは、現在テーブルの表示可能領域にないセルが、スクロールして表示に戻ると、もう一度作成されるかのようです。
この苛立たしい動作に対するエレガントな解決策を思いついた人はいますか?