Сохранять поисковый запрос видимым, когда UISearchDisplayController неактивен

Мое приложение использует 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";

Лучшие предложения все еще приветствуются!

6
задан Johan Kool 21 January 2011 в 07:48
поделиться