基になるNSFetchedResultsControllerを表示するUITableViewがあります。
fetchedResultsController が更新されると、
- (void)controller:(NSFetchedResultsController *)controller didChangeObject:(id)anObject atIndexPath:(NSIndexPath *)indexPath forChangeType:(NSFetchedResultsChangeType)type newIndexPath:(NSIndexPath *)newIndexPath {
と呼ばれます。そして、以下が実行されます。
case NSFetchedResultsChangeInsert:
[tableView insertRowsAtIndexPaths:[NSArray arrayWithObject:shiftedIndexPath] withRowAnimation:UITableViewRowAnimationFade];
break;
cellForRowAtIndexPath は、新しい行に対してのみ呼び出されます (これは論理的です)。
ただし、問題は、テーブル ビューの行に表示されるすべての値が下に移動することです。最初の行にはそのタイトルが表示されます。2 行目には、1 行目のタイトルが表示されます。3 行目に 2 行目のタイトルなど。それを繰り返すと、3 行目には 2 行目のタイトル、4 行目には 3 行目のタイトルなどが表示されます。
特に cellForRowAtIndexPath は新しい行 (論理的) に対してのみ呼び出され、これらすべての行に対して呼び出されるわけではないため、何が起こるかわかりません。さらに、間違ったタイトルの行をクリックすると、正しいドキュメントが開きます (didSelectRowAtIndexPath は indexPath で正しく機能します)。
何が起こるかの手がかりはありますか?ありがとう!