UIKit-关于UISearchController那些事
本篇讲到SearchBar一些配置中的问题
我使用的是在要添加的页面添加Controller然后新增一个TableViewController配合使用的模式
即
1 | let sr = SearchResults() |
可以减少代码的臃肿量,尤其是在代码量很大的Player页面里,但会有很多数据传输的问题,这个先不谈
位置偏移
- 如果直接设置navigationBar隐藏,然后把searchBar添加到一个位置,会出现tableVIew留空的状态
这是tableVIew自动处理边距的问题
把tableView.contentInsetAdjustmentBehavior
设置为never就行
-
如果设置一个View然后把bar放进去,不会又偏移,但是拖动列表后会出现偏移,解决方法也是把
tableView.contentInsetAdjustmentBehavior
设置为never但是此方法由于隐藏了navigationBar,导致列表过长时上拉会在状态栏透出来,
就得使用第三种方法
-
使用navigationItem的titleView
1
2
3
4
5
6
7
8
9
10
11
12
13let resultsTableViewController = SearchResults()
searchController = UISearchController(searchResultsController: resultsTableViewController)
searchController.delegate = self
searchController.searchResultsUpdater = resultsTableViewController
definesPresentationContext = true
UIBarButtonItem.appearance(whenContainedInInstancesOf: [UISearchBar.self]).title = "不搜了"
searchController.searchBar.delegate = resultsTableViewController
searchController.hidesNavigationBarDuringPresentation = false
searchController.searchBar.placeholder = "搜索想听的音乐"
searchController.searchBar.sizeToFit()
navigationItem.titleView = searchController.searchBar同时本身要挂上
UISearchControllerDelegate
,结果控制器要挂上UISearchBarDelegate
这样就行了
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 X Mεl0n | 随手记!