iOS UISearchBar搜索组件使用指南
iOS 里的搜索功能,UISearchBar可以说是个老朋友了。用它配合UITableView做本地搜索,响应快,用户体验也挺顺滑。如果你刚接触这块儿,建议先搞清楚它的结构,像搜索框、取消按钮、占位提示这些,用起来都挺直观的。
直接用代码拉一个出来也不麻烦:
let searchBar = UISearchBar(frame: CGRect(x: 0, y: 0, width: view.frame.width, height: 44))
view.addSubview(searchBar)
配个placeholder
提示语,比如“输入搜索关键词”,就算是一个比较完整的展示了。想进一步控制行为,就得上代理——UISearchBarDelegate
。监听输入变化啊,点搜索按钮啊,取消搜索啊,都是用这个搞定。
下面这段代理代码你用得上:
func searchBar(_ searchBar: UISearchBar, textDidChange searchText: String) {
// 过滤数据刷新表格
}
func searchBarSearchButtonClicked(_ searchBar: UISearchBar) {
// 执行搜索操作
}
func searchBarCancelButtonClicked(_ searchBar: UISearchBar) {
// 清除搜索状态
}
集成到表格里也挺自然的,监听textDidChange
,动态过滤数据源,reloadData()
,搜索结果马上更新,效果直接。
不过,UISearchController才是现在更推荐的方案。它不仅管搜索框,还把搜索结果界面也包了,动画也更丝滑:
let searchController = UISearchController(searchResultsController: nil)
searchController.searchResultsUpdater = self
searchController.obscuresBackgroundDuringPresentation = false
searchController.searchBar.delegate = self
tableView.tableHeaderView = searchController.searchBar
实现updateSearchResults
方法搞定搜索逻辑,页面切换也干净利落。
如果你还没用过UISearchController
,可以先用UISearchBar
练手,等熟了再升级。不着急,掌握得稳才是重点。
SuoTableView 1.zip
预估大小:84个文件
SuoTableView 1
文件夹
SuoTableViewTests
文件夹
SuoTableViewTests.m
660B
SuoTableViewTests-Info.plist
691B
en.lproj
文件夹
InfoPlist.strings
45B
.DS_Store
6KB
SuoTableView
文件夹
ViewController.m
8KB
.DS_Store
6KB
...
667.38KB
文件大小:
评论区