UISearchDiplayController: показать все результаты без ввода текста? - PullRequest
3 голосов
/ 24 марта 2010

У меня есть UISearchDisplayController, который используется для отображения длинного списка опций, которые пользователь может выбрать. Я фильтрую список, используя строку поиска, предоставленную контроллером.

Все работает нормально, кроме того, что я не могу отобразить таблицу результатов, кроме как путем ввода текста в строку поиска. Я хочу, чтобы в таблице отображались все мои результаты, даже если в строке поиска нет текста. В настоящее время, когда нет текста, у меня просто приглушенный базовый вид.

Возможно ли это, пожалуйста? Или я вообще не должен беспокоиться о UISearchDisplayController, а просто иметь панель поиска в другом табличном представлении, которое я отображаю, а затем просто выталкиваю его из стека?

Ответы [ 2 ]

3 голосов
/ 11 мая 2011

Чтобы мгновенно отображать результаты поиска с пустой строкой поиска при появлении клавиатуры, добавьте следующий код в ViewController:

-(void)searchDisplayControllerDidBeginSearch:(UISearchDisplayController *)controller {
  [controller.searchBar.delegate searchBar:controller.searchBar textDidChange:@" "];
}

Чтобы таблица результатов отображалась, когда пользователь вводит некоторый текст и затем очищает searchBox, добавьте:

-(void)searchDisplayController:(UISearchDisplayController *)controller didHideSearchResultsTableView:(UITableView *)tableView {
  [controller.searchBar.delegate searchBar:controller.searchBar textDidChange:@" "];    
}

Не забудьте вернуть YES в searchDisplayController: shouldReloadTableForSearchString:

0 голосов
/ 21 марта 2011

Как правило, вы хотите начать с загрузки всего вашего контента в один массив, из которого вы бы отображали табличное представление как "нормальное".

Как только это сработает, создайте второй массив, содержащий результаты поиска из

- (BOOL)searchDisplayController:(UISearchDisplayController *)controller shouldReloadTableForSearchString:(NSString *)searchString

Затем в методах делегата / источника данных табличного представления определите, в каком контексте вы находитесь, проверив

if (_tableView == self.searchDisplayController.searchResultsTableView)
...