Панель поиска в повторно используемом ViewController не отвечает после перехода

Я настраиваю контроллер поиска в контроллере представления:

searchController = UISearchController(searchResultsController: nil)
searchController.searchResultsUpdater = self
searchController.dimsBackgroundDuringPresentation = false
searchController.searchBar.placeholder = getLocalizedString("searchByName")
searchController.searchBar.setValue(getLocalizedString("cancel"), forKey:"_cancelButtonText")
searchController.searchBar.delegate = self
searchController.hidesNavigationBarDuringPresentation = false
searchController.searchBar.showsCancelButton = true
searchController.searchBar.sizeToFit()

Затем, когда нажимается кнопка поиска на панели навигации, я представляю панель поиска в заголовке панели навигации:

self.navigationItem.setHidesBackButton(true, animated: true)
self.navigationItem.rightBarButtonItem = nil
self.navigationItem.leftBarButtonItem = nil

self.navigationItem.titleView = searchController.searchBar

searchController.searchBar.becomeFirstResponder()

Когда я использую этот контроллер представления в качестве элемента панели вкладок, панель поиска работает как положено.

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

После того, как будет выполнен переход, и я нажму кнопку поиска, появится панель поиска, но она не реагирует на нажатия или что-либо еще.

Обновить

Я просто понял, что это потому, что я использую:

self.definesPresentationContext = true

Есть идеи почему? Мне это нужно, потому что если нет, то экран затемнен, если я перемещаюсь между вкладками.

Благодарю.

1 ответ

Решение

Для людей, которые ищут ответ, я смог это исправить, установив definesPresentationContext ложно в prepareForSegue метод.

Кроме того, чтобы избежать черного экрана, когда пользователь откатится назад, я также установил его в true в viewWillAppear,

Другие вопросы по тегам