1

私のアプリは、ユーザーが一部の行を非表示にする可能性のあるデータのリストを保持しています。非表示/表示ボタンは、テーブルビューを編集モードにしてから編集する行を選択することでアクセスできる編集パネルにあります。これは、編集モードでは、通常は非表示の行であっても、すべての行を表示する必要があることを意味します。そうしないと、それらを再表示する方法がありません。

これを実装するには、fetchedResultsController を nil に設定し、setEditing 内でテーブルをリロードします。次に、fetchedResultsController の述語を作成するコードを変更して、テーブルが編集モードかどうかを確認し、そうであれば、隠しリストを除外する述語の部分をスキップします。 . そのため、ユーザーが [編集] ボタンに触れると、テーブルは編集モードに入る途中ですべての行を再読み込みし、戻る途中で非表示の行のみを再読み込みします。

これは、編集モードに出入りするときに通常見られるアニメーションを殺してしまったことを除けば、問題なく動作します。追加のリロードにより、突然のように見えます。[super setEditing:animated] の呼び出しの前または後にリロードを行っても違いはありません。

これを行うためのより良い方法または場所はありますか?

4

2 に答える 2

1

から: http://developer.apple.com/library/ios/#documentation/CoreData/Reference/NSFetchedResultsController_Class/Reference/Reference.html

フェッチ リクエストの変更 フェッチ リクエスト を単純に変更して結果を変更することはできません。取得リクエストを変更する場合は、次のことを行う必要があります。

  1. キャッシュを使用している場合は、それを削除します (deleteCacheWithName: を使用)。通常、フェッチ リクエストを変更する場合は、キャッシュを使用しないでください。
  2. 取得リクエストを変更します。
  3. performFetch を呼び出します。

コントローラーを破棄してテーブルをリロードするよりもうまくいくかどうかを確認してください。

于 2011-08-12T17:16:58.640 に答える
0

CD オブジェクトに可視性属性を含めます。編集モードに入ったら、すべての非表示セルの属性を反転します。fetchedResultsController の述語に可視性属性を含めます。コールバックを実装している場合は、テーブル セルが自動的に追加されます。

于 2011-08-12T17:15:04.037 に答える