2016-04-14 2 views
0

настроить контроллер поиска в контроллере представления:панель поиска в повторно используемой ViewController не реагирует после Segue

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() 

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

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

self.navigationItem.titleView = searchController.searchBar 

searchController.searchBar.becomeFirstResponder() 

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

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

После выполнения segue и нажатия кнопки поиска отображается панель поиска, но не отвечает на клики или что-то еще.

Update

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

self.definesPresentationContext = true 

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

Спасибо.

ответ

1

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

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

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