2009-09-04 7 views
0

私はNSFetchedResultsControllerDelegateを実装するUITableViewを持っています。私がセルをタップすると、私はtablecellsによって表されるエンティティを編集できる別のviewcontrollerを読み込みます。編集が終わったら、それは[self.tableview reloadData]を行うメッセージをUITableViewControllerに送ります。UITableViewのreloadDataはセルをリソートしていません

私の問題は、reloadDataがデータを変更した後にデータを使用していないようです。どうすればいいの?どうすればそれを得ることができますか?

答えて

1

何をしようとしているのかはっきりしません。しかし、セルをテーブルビューの別の順序にしたい場合は、データソースをソートする必要があります。最初にそれを1 2 3の順番にしたい場合は、データソース内でその順番になりますが、それらを2 1 3する必要がありますし、その順序で2 1 3を含むようにデータソースを使用する必要があります、それはすべてのインデックスパスのcellForRowAtIndexPathで返されるものに依存します、私が与えたサンプルは、あなたのデータソースである配列にインデックス化してください。

+0

ここでDanielの考え方を続けると、「reloadData」は、tableviewがデータを変更することを意味するものではありません。これは、テーブルビューが*あなた*に再度データを要求することを意味します。これは、データを維持するためにデータソース(書き込む)の責任です。 –

+0

私はNSSetDescriptorsの配列をNSFetchedResultsControllerに渡しました。 [self.tableView reloadData]を呼び出すと、新しい要素や変更された要素がソートされません。 –

+0

実際にデータソースが変更されていることを確認してください... – Daniel

0

NSFetchedResultsControllerにNSSortDescriptorを渡すことはできますが、実際にフェッチを実行しましたか?

0

[NSManagedObjectContext -save:]を使用して変更を保存する必要があります。その後、NSFetchedResultsControllerが変更を受け取り、更新するためにテーブルビューに通知します。 -reloadDataはあなたのために処理されるため、電話する必要はありません。

UITableViewControllerが更新を処理できるようにNSFetchedResultsControllerの代理人であることを確認してください。

関連する問題