Проблемы с передачей indexPath.row с помощью prepareForSegue с UISearchBar

Я чертовски долго добиваюсь, чтобы все это трио Core Data, Storyboard и UISearchBar работало вместе, как должно. Наконец, успешно построив таблицу с помощью Core Data, сузив элементы с помощью Search Text и изменив prepareForSegue, остается одна заминка...

Когда я нажимаю на любой элемент в таблице, чтобы перейти к подробному представлению, все нормально в нефильтрованной таблице. Вызывается PrepareForSegue, и детали отображаются идеально.

Когда я выполняю поиск, моя таблица фильтруется (сейчас я собираюсь использовать опцию фильтрованного массива вместо второго NSFetchedResultsController, но не из-за отсутствия попыток!).

Когда я щелкаю по элементу в отфильтрованном списке, вызывается prepareForSegue и выдвигается подробное представление, однако оно всегда извлекает детали из первого элемента в списке!

Например, если я ищу «c», а список сужается до «Charlie» и «Cookie», при выборе «Charlie» я вижу подробное представление для «Charlie». Когда я выбираю «Cookie», я, к сожалению, также вижу подробное представление для «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;

Будем признательны за любую помощь!

6
задан Zachary Fisher 31 May 2012 в 11:19
поделиться