【发布时间】:2021-12-05 02:24:23
【问题描述】:
我试图通过设置其isActive 属性来呈现一个搜索控制器以响应按钮,但它没有出现。
lazy var searchController: UISeachController = {
let searchController = UISearchController(searchResultsController: nil)
searchController.delegate = self
return searchController
}()
override func viewDidLoad() {
super.viewDidLoad()
definesPresentationContext = true
}
// Called when a button on the navbar is tapped
@obcj private func searchTapped() {
// The doc says you can force the search controller to appear by setting isActive,
// but nothing happens
searchController.isActive = true
// Calling present does show it, but the search bar appears behind the navbar.
// And the delegate methods are still not called
//present(searchController, animated: true)
}
func willPresentSearchController(_ searchController: UISearchController) {
// Not called, even when calling 'present'
}
【问题讨论】:
-
您没有搜索结果控制器,也没有搜索栏,那么您期望会发生什么?
-
搜索控制器自动配置搜索栏,搜索结果控制器是可选的。我正在使用表格视图控制器来获取结果,但这与我的问题无关。搜索控制器在显式调用 present 时正确显示,所以我认为没有任何遗漏。