Как позволить строке поиска сразу исчезать при переходе на другой ВК - PullRequest
0 голосов
/ 18 октября 2019

Ниже Gif из моего приложения, 1-й ВК включает в себя панель поиска для фильтрации песен, а когда нажимает строку, чтобы перейти на 2-й ВК, чтобы показать выбранную воспроизводимую песню.

Вопрос здесь, это то, что, когда открывается второй VC, строка поиска не исчезает сразу, она имеет задержку в 1 или 2 секунды, может видеть это поведение снизу GIF.

/ / / Вот мой код,как я мог решить эту проблему? Любая подсказка приветствуется.

  • Панель поиска
var resultSearchController = UISearchController()

override func viewDidLoad() {
...
// add search bar
        resultSearchController = ({
            let controller = UISearchController(searchResultsController: nil)
            controller.searchResultsUpdater = self
            controller.hidesNavigationBarDuringPresentation = false
            controller.dimsBackgroundDuringPresentation = false
            controller.searchBar.sizeToFit()
            // set search Bar covered color, same with tableView's background color.
            controller.searchBar.barTintColor = UIColor(rgb: 0x292f33)
            self.tableView.tableHeaderView = controller.searchBar

            return controller
            })() // closure, learn it later!!
...
}
  • Я отключаю панель поиска при выходе из текущего VC.
override func viewWillDisappear(_ animated: Bool) {
        super.viewWillDisappear(true)

        resultSearchController.isActive = false
    }

enter image description here

/ / Обновление, как комментарий Мэтта, я изменяю код для интеграции панели поиска в панель навигации, и теперь панель поиска сразу исчезаетпосле открытия VC2.

удалите self.tableView.tableHeaderView = controller.searchBar и интегрируйте панель поиска в панель навигации navigationItem.searchController = resultSearchController. Теперь поведение такое же, как в почтовом приложении Apple.

1 Ответ

0 голосов
/ 18 октября 2019
searchController.searchBar.isHidden = false

Скрытие searchController вместо установки активного состояния в ложное состояние может решить вашу проблему.

Попробуйте добавить приведенную выше строку к вашему коду в viewWillDisappear ()

, надеюсь, это поможет.

...