Поскольку область действия предназначена только для использования, когда UISearchController
активен, я решил проблему по-другому.
Я немедленно активирую UISearchController
.
override func viewDidLayoutSubviews() {
super.viewDidLayoutSubviews()
// Immediately activating the searchController keeps scope bar permanently visible
searchController.isActive = true
// Tapping the cancel button triggers this method, which quickly toggles the scope bar
// But the cancel button isn't needed anyway, so hiding it solves the problem
searchController.searchBar.showsCancelButton = false
}
Но теперь, когда UISearchController
всегда активен, по умолчанию UINavigationBar
скрыт, что, вероятно, не то, что вам нужно. Чтобы это исправить, я предотвращаю его скрытие в viewDidLoad
searchController.hidesNavigationBarDuringPresentation = false
Этот подход означает, что мне вообще не нужно использовать showsScopeBar
, потому что он всегда виден, когда UISearchController
активен.