このコアデータ、ストーリーボード、UISearchBarトリオ全体を正常に連携させるのに時間がかかっています。最終的にCoreDataを使用してテーブルを正常に作成し、検索テキストを使用して項目を絞り込み、prepareForSegueを変更しましたが、まだ1つの問題があります...
テーブル内の任意のアイテムをクリックして詳細ビューに移動すると、フィルタリングされていないテーブルではすべて問題ありません。PrepareForSegueが呼び出され、詳細が完全に表示されます。
検索すると、テーブルがフィルター処理されます(2番目のNSFetchedResultsControllerの代わりに、フィルター処理された配列オプションを使用しますが、試行不足のためではありません!)。
フィルタされたリストのアイテムをクリックすると、prepareForSegueが呼び出され、詳細ビューがプッシュされますが、常にリストの最初のアイテムから詳細が取得されます。
たとえば、「c」を検索してリストを「Charlie」と「Cookie」に絞り込んだ場合、「Charlie」を選択すると「Charlie」の詳細ビューが表示されます。「クッキー」を選択すると、残念ながら「チャーリー」の詳細ビューも表示されます
私はprepareForSegueコードが問題であると仮定しています(おそらく間違っていますか?)。コードは次のとおりです。
SampleTVC *sampleDetailTVC = segue.destinationViewController;
sampleDetailTVC.delegate = self;
// Store selected Role in selectedRole property
NSIndexPath *indexPath = [self.tableView indexPathForSelectedRow];
// self.selectedRole = [self.fetchedResultsController objectAtIndexPath:indexPath];
if (savedSearchTerm){
self.selectedRole = [self.searchResults objectAtIndex:indexPath.row];
} else {
self.selectedRole = [self.fetchedResultsController objectAtIndexPath:indexPath];
}
NSLog(@"Passing selected role (%@) to SampleTVC", self.selectedRole.name);
sampleDetailTVC.role = self.selectedRole;
どんな助けでもいただければ幸いです!