我正在编码设置搜索栏(而非故事板)
以下是与搜索栏相关的代码:
var searchController = UISearchController(searchResultsController: nil)
func setupNavBar() {
self.navigationItem.title = "Tools"
self.navigationController?.navigationBar.prefersLargeTitles = true
navigationItem.hidesSearchBarWhenScrolling = false
}
func configureSearchController() {
filteredData = toolsList.allTools
searchController.searchResultsUpdater = self
searchController.hidesNavigationBarDuringPresentation = false
searchController.dimsBackgroundDuringPresentation = false
searchController.searchBar.searchBarStyle = .minimal
searchController.searchBar.tintColor = .purple
tableView.tableHeaderView = searchController.searchBar
searchController.searchBar.placeholder = "Search for tools"
}
override func viewDidLoad() {
super.viewDidLoad()
setupNavBar()
tableViewConfigurations()
configureSearchController()
}
func searchBarTextDidBeginEditing(_ searchBar: UISearchBar) {
isSearching = true
tableView.reloadData()
}
func searchBarCancelButtonClicked(_ searchBar: UISearchBar) {
isSearching = false
tableView.reloadData()
}
虽然使用这行代码我要求在滚动时禁用隐藏搜索栏,但它仍然隐藏。
navigationItem.hidesSearchBarWhenScrolling = false
我可以请你指导我如何禁用它吗? 非常感谢你
答案 0 :(得分:1)
看看Apple的文档,我发现了这个:
您必须为此属性配置searchController属性 [hidesSearchBarWhenScrolling]有任何效果。导航 控制器隐藏并仅显示搜索提供的搜索栏 该财产中的控制人。
我尝试将searchController添加到navigationItem。
答案 1 :(得分:1)
@very_supercharged谢谢我已将searchBar从表视图转移到navigationBar 我改变了:
tableView.tableHeaderView = searchController.searchBar
到
navigationItem.searchController = searchController
现在,在滚动时,searchBar不会隐藏。