저는 전체 Core Data, Storyboard, UISearchBar 트리오가 함께 작동하도록하는 데에는 시간이 걸립니다. 마침내 Core Data로 테이블을 성공적으로 구축하고 검색 텍스트로 항목을 좁히고 prepareForSegue를 수정하면 여전히 한 가지의 문제가 있습니다 ...UISearchBar를 사용하여 prepareForSegue로 indexPath.row를 전달하는 데 문제가 있습니다.
세부 정보보기로 이동하려면 테이블의 항목을 클릭하면, 필터링되지 않은 테이블에서는 모두 정상입니다. PrepareForSegue가 호출되고 세부 사항이 완벽하게 나타납니다.
검색 할 때 내 테이블이 필터링됩니다. 이제는 두 번째 NSFetchedResultsController 대신 필터링 된 배열 옵션을 사용할 예정이지만 시도하지는 않았습니다!).
필터링 된 목록에서 항목을 클릭하면 prepareForSegue가 호출되고 상세보기가 푸시되지만 목록의 첫 번째 항목에서 항상 세부 정보가 표시됩니다.
예를 들어 'c'를 검색하고 목록이 'Charlie'및 'Cookie'로 좁혀진 경우 'Charlie'를 선택하면 '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;
도움이 되셨습니까? 필립 밀스에
는 "쿠키"를 선택, 당신이를 기록 할 수 있습니다
는 단지 추가했다 역할을 얻는 시점에서'self.searchResults'와'indexPath.row'의 값은? –추가 할 때 : if (savedSearchTerm) { self.selectedRole = [self.searchResults objectAtIndex : indexPath.row]; NSLog (@ "검색 결과는 무엇입니까? % @ indexpath : % @", self.searchResults, indexPath.row); -------------------- 다음과 같은 결과를 얻었습니다 : searchresults는 무엇입니까? charlie, cookie [단축형 편집] indexpath는 무엇입니까? (null) ----- I index.path (null)이 문제 일 수 있다고 생각하십니까? –
그리고 검색되지 않은 테이블에서 indexPath를 로그하면 다음과 같습니다. indexpath는 무엇입니까? 2 개의 인덱스 [0, 3] –