2010-03-23 2 views
3

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

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

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

ответ

0

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

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

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

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

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

для отображения результатов поиска мгновенно с пустыми SearchBar при появлении клавиатуры, добавьте следующий код 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

Отлично! Заметка для будущих посетителей: убедитесь, что ваш делегат searchBar настроен на UISearchDisplayController, если вы так себя поняли, как я. – Philip

Смежные вопросы