1

私はNSFetchedResultsControllerに裏打ちされたUITableViewを持っています。

コントローラーが画面から消えると、フェッチされたコントローラー デリゲートとして辞任するという提案に従います。したがって、コンテキスト通知と reloadData に完全に依存しています。

基本的に、通知を分析し、挿入/更新/削除されたオブジェクトにテーブルに関連するエンティティとプロパティがある場合、フラグ needsReload=YES を設定します。viewWillAppear で、この変数をチェックして reloadData を呼び出します。

ただし、NSFetchedResultsController には、NSManagedObject 属性「pname」の並べ替え順序があります。

他のView Controllerでpnameを0nameからZnameに更新すると、コンテキスト変更通知を傍受でき、次のviewWillAppearでテーブルが正しくリロードされます。

問題は、並べ替え順序のためにセルが一番下にあると予想されることですが、代わりに、reloadData が表示されているセルのみを更新するため、一番上に更新されたままになると思います。どうすればこれを解決できますか?

4

1 に答える 1

7

デリゲートを に設定すると、フェッチされた結果コントローラーは管理オブジェクト コンテキストの変更を追跡しなくなりますnil

したがって、デリゲートを再割り当てした後、呼び出す必要があります

[self.fetchedResultsController performFetch:&error]

最初にそして次に

[self.tableView reloadData];
于 2012-09-02T07:05:06.787 に答える