Мое приложение использует UISearchDisplayController
. Когда пользователь ввел поисковый запрос, я хочу, чтобы он оставался видимым в строке поиска. Это работает, если пользователь выбирает один из совпавших результатов, но не если пользователь нажимает кнопку «Поиск».
Это работает:
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
if (tableView == self.searchDisplayController.searchResultsTableView) {
NSString *selectedMatch = [self.searchMatches objectAtIndex:indexPath.row];
[self.searchDisplayController setActive:NO animated:YES];
[self.searchDisplayController.searchBar setText:selectedMatch];
return;
}
...
Но если я сделаю то же самое в -searchBarSearchButtonClicked:
, текст не останется в строке поиска. Любые идеи о том, как я могу сделать это в этой ситуации?
Связано, если я устанавливаю текст панели поиска (но оставляю UISearchDisplayController
неактивным), это вызывает отображение searchResultsTableView. Я хочу показать это только тогда, когда пользователь нажимает на панель поиска.
Редактировать: Найден обходной путь для установки текста панели поиска без отображения searchResultsTableView в любое время:
// This hacky YES NO is to keep results table view hidden (animation required) when setting search bar text
[self.searchDisplayController setActive:YES animated:YES];
[self.searchDisplayController setActive:NO animated:YES];
self.searchDisplayController.searchBar.text = @"text to show";
Лучшие предложения все еще приветствуются!