табличное представление больше не является searchResultsTableView после возврата из подробного представления - PullRequest
3 голосов
/ 13 мая 2011

Я использую UISearchDisplayController на основе этого урока: http://developer.apple.com/library/ios/#samplecode/TableSearch/Introduction/Intro.html

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

Я использую такой код, подобный следующему, чтобы определить, является ли текущее представление таблицы searchResultsTableView.

- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView {
    if(tableView == self.searchDisplayController.searchResultsTableView)
        return 1;
    else
        return [self.arrCharacters count];
}

Моя проблема заключается в том, что когда пользователь возвращается из подробного представления в представление таблицы результатов поиска, этот tableView становится обычным представлением таблицы, а не searchResultsTableView. Но таблица по-прежнему фильтруется и показывает только результаты поиска. Просто tableView больше не распознается как searchResultsTableView. Таким образом, все мои расчеты индекса идут неправильно и приложение вылетает.

Любая помощь очень ценится.

Большое спасибо,

1 Ответ

0 голосов
/ 08 августа 2011

Один из альтернативных способов решения этой ситуации - установить флаг, независимо от того, является ли ваша таблица searchResultTableView или просто обычным tableView.Например, когда пользователь выполнил поиск в любом случае, установите свой флаг как true и оставьте это значение, пока пользователь не нажмет на отмену или любой другой способ завершить поиск.Поскольку вы используете searchDisplayController, в конце поиска будет вызван метод делегата

-(void)searchDisplayControllerWillEndSearch:(UISearchDisplayController *)controller

, поэтому вы можете изменить значение флага, чтобы указать нормальную таблицу.Основываясь на этом значении флага, вы можете поместить оператор if в методы делегата tableView, чтобы настроить таблицу так, как вы хотите.Однако, когда я пытаюсь проверить ту же ситуацию, что и ваш случай (выполнить поиск и щелкнуть одну из ячеек таблицы и вернуться к предыдущей таблице) в моем приложении, tableView по-прежнему удерживается как searchResultTableView.

...