0

NSFetchedResultsController の didChangeSection メソッドが呼び出されていません。Web を検索したところ、sectionNameKeyPath に一時的なプロパティを使用すると、この問題が発生する可能性があることがわかりました。ここから: "didChangeSection:" NSfetchedResultsController デリゲート メソッドが呼び出されない

これは本当に一時的な性質によるものですか?また、sectionNameKeyPath に一時的なプロパティを使用するときに、didChangeSection を呼び出す方法を教えてください。viewForHeaderInSection を使用してセクション ヘッダーをカスタマイズしましたが、didChangeSection メソッドなしで更新するにはどうすればよいですか?

今は で使っ[self.tableView reloadDate]viewWillAppearいますが、項目の追加・削除後は0.5秒程度とはいえ少し遅く感じます。

私の fetchedResultsController のセットアップは、Apple のサンプルである DateSectionTitles のようでした: http://developer.apple.com/library/ios/#samplecode/DateSectionTitles/Introduction/Intro.html

そのサンプルは単純で- (NSFetchedResultsController *)fetchedResultsController、フェッチ結果コントローラー部分にのみ含まれています。テーブルビュー関連のメソッドをいくつか追加しました:

- (void)controllerWillChangeContent:(NSFetchedResultsController *)controller

- (void)controller:(NSFetchedResultsController *)controller didChangeObject:(id)anObject atIndexPath:(NSIndexPath *)indexPath forChangeType:(NSFetchedResultsChangeType)type newIndexPath:(NSIndexPath *)newIndexPath

- (void)controller:(NSFetchedResultsController *)controller didChangeSection:(id <NSFetchedResultsSectionInfo>)sectionInfo atIndex:(NSUInteger)sectionIndex forChangeType:(NSFetchedResultsChangeType)type

- (void)controllerDidChangeContent:(NSFetchedResultsController *)controller

- (void)controller:(NSFetchedResultsController *)controller didChangeSection:(id <NSFetchedResultsSectionInfo>)sectionInfo atIndex:(NSUInteger)sectionIndex forChangeType:(NSFetchedResultsChangeType)type呼ばれないだけ。

日付をセクション タイトルとして使用しましたが、セクション ヘッダーの他の部分、つまり行アイテムの合計を更新する必要があります。

更新:私は間違っています。呼ばれています。セル (新しいセクションではない) を挿入すると思ったので、didChangeSection を呼び出して、カスタマイズしたセクション ヘッダーを更新する必要があります。ただし、didChangeSection は、セクションの挿入または削除に対してのみ呼び出されます。[self.tableView reloadDate] を使用するだけで、セルの変更に対してセクション ヘッダーが更新されます。

モーダルビューのクローズビューメソッドの前に [self disconnectViewControllerAnimated:YES completion:NULL] を入れてみたところ、ビューがすぐに閉じてセル挿入アニメーションが見られるようになりました。

4

0 に答える 0