Представления элементов навигации исчезают при использовании нескольких панелей поиска и интерактивного жеста - PullRequest
0 голосов
/ 05 июня 2019

Я использую несколько UISearchBar как titleView s в UINavigationController s, встроенных в UITabBarController. Все это прекрасно работает, когда я нажимаю и выскакиваю контроллеры с помощью кнопки назад. Но панель поиска начинает исчезать, когда я щелкаю с помощью интерактивного жеста.

Я не уверен, как это исправить.

Я пытался установить titleView из navigationItem в viewWillAppear и viewDidAppear, но оба не работали.

Панель поиска принимает ввод и касается, она просто не видна.

Вот код viewWillAppear:

override func viewWillAppear(_ animated: Bool) {
    print("view will appear from base search")
    super.viewWillAppear(animated)
    print(self.searchController.searchBar)
    self.definesPresentationContext = true
    self.navigationItem.titleView = nil
    self.navigationItem.titleView = self.searchController.searchBar
    self.navigationController?.setNavigationBarHidden(false, animated: true)
}

Вот несколько фотографий того, что происходит:

https://imgur.com/a/OQ7kb1q

Первая фотография - домашняя страница.

Вторая фотография - пользователь, набирающий в поисковом запросе.

Третье фото - когда пользователь возвращается после выполнения интерактивного жеста.

Четвертая фотография показывает, что вы все еще можете печатать в строке поиска, даже если она не видна.

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

1 Ответ

0 голосов
/ 05 июня 2019

Я исправил это, установив: self.navigationItem.searchController = searchController

вместо настройки:

self.navigationItem.titleView = searchController.searchBar

...