9

Я использую UISearchController для отображения строки поиска и результатов в UITableView. Мне удалось настроить его правильно, но когда я просматриваю результаты, а затем выбираю одну из строк в представлении таблицы и нажимаю новый контроллер представлений на стек навигации, я бы ожидал, что панель поиска больше не будет видна. Однако, когда я пытаюсь это, панель поиска с первого контроллера представления видна во 2-м контроллере представления:UISearchController не скрывает вид при нажатии

if (self.searchController == nil) { 
    self.searchController = [[UISearchController alloc] initWithSearchResultsController:nil]; 
    self.searchController.searchResultsUpdater = self; 
    self.searchController.dimsBackgroundDuringPresentation = NO; 
    self.searchController.searchBar.scopeButtonTitles = @[]; 
    self.searchController.searchBar.delegate = self; 

    self.tableView.tableHeaderView = self.searchController.searchBar; 
} 

Одним из вариантов является вызов self.searchController setActive:NO] внутри didSelectRowAtIndexPath: но это не способ сделать это без отвлекающую анимацию при отображении строки поиска каждый раз, когда выбираются результаты поиска.

У кого-то есть такая же проблема? Есть ли способ сообщить UISearchController скрыть строку поиска при нажатии? Он работал хорошо, когда я использовал UISearchDisplayController

+0

Это [решение] (http://stackoverflow.com/questions/29472011/uisearchcontroller-persisting-after-segue/29624748#29624748) help? –

ответ

31

Поместите это в viewDidLoad:

Swift:

self.definesPresentationContext = true 

Objective-C:

self.definesPresentationContext = YES; 

Это решило проблему для меня.

+4

Какое неясное решение. Но, конечно же, это сработало! –

+1

Да. Не могу понять. но работал и на меня! –

+1

> «Не могу понять, но работал на меня. –

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

  • Нет связанных вопросов^_^