2016-03-11 2 views
1
let searchController = UISearchController(searchResultsController: nil) 

override func viewDidLoad() { 
    super.viewDidLoad() 

    searchController.searchResultsUpdater = self 
    searchController.dimsBackgroundDuringPresentation = false 

    // searchController.definesPresentationContext = true 
    self.definesPresentationContext = true 

Когда панель поиска активна, с текстом в ней, и я перехожу на другую вкладку, а затем обратно, контроллер черный, кроме фактической строки поиска. Когда я отменю и опущу поле поиска, все возвращается к норме. Мой вопрос в основном идентичен этому вопросу: UISearchController causes black screen Swift 2.0self.definesPresentationContext = true: приводит к черному экрану?

За исключением того, что этот ответ не решает мою проблему, как вы можете видеть. Что решает это, если я изменяю себя на searchController, таким образом: searchController.definesPresentationContext = true. Но это приводит к появлению строки поиска, появляющейся на следующей вкладке контроллера I. Очень смущенный, пожалуйста, помогите.

Я использую табличное представление, встроенное в контроллер навигации и контроллер панели вкладок. viewDidDisappear не вызывается, когда поиск активен.

ответ

1

Не решение как таковое, но обходной путь, этот пост stackoveroverflow помог: TableView with SearchController - DEINIT not called. Я не уверен, что это какая-то ошибка Apple.

Видимо, я не должен использовать self.definesPresentationContext = true вообще. Это заставляет мой поиск появляться во всех моих вкладках. Но вызывается как минимум viewDidDisappear.

In viewDidDisappear, я могу скрыть строку поиска с помощью searchController.searchBar.hidden = true и показать панель снова в viewDidAppear.

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