1.定义搜索控制器变量
var searchController: UISearchController!
2.为搜索控制器赋值
searchController = UISearchController(searchResultsController: nil)
(此函数代表仅限当前控制器存在搜索控制器)
3.设置搜索控制器的代理
searchController.searchResultsUpdater = self
4.为当前视图的头部添加搜索框
tableView.tableHeaderView = searchController.searchBar
tableViewCell 搜索相关数据
1.定义数组存放查找到的数据
var searchResults: [Area] = []
2.添加一个搜索依据方法
func searchFilter(text: String) {
searchResults = areas.filter({ (area) -> Bool in
return area.name!.localizedCaseInsensitiveContains(text)
})
}
3.执行搜索方法
func updateSearchResults(for searchController: UISearchController) {
if let text = searchController.searchBar.text {
searchFilter(text: text)
tableView.reloadData()
}
}
4.根据搜索栏是否被激活显示数据行数
override func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
// #warning Incomplete implementation, return the number of rows
return searchController.isActive ? searchResults.count : areas.count
}
5.根据搜索栏是否被激活选择相应的显示数据
override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let area = searchController.isActive ? searchResults[indexPath.row] : areas[indexPath.row]
}
6.根据搜索栏是否被激活选择Cell是否能修改
override func tableView(_ tableView: UITableView, canEditRowAt indexPath: IndexPath) -> Bool {
return !searchController.isActive
}
7.如果有转场传值的话需要相应更改
搜索条美化
// 搜索条美化之后背景不变黑,且可以点击搜索数据
searchController.searchBar.dimsBackgroundDuringPresentation = false
// 搜索条占位符
searchController.searchBar.placeholder = ""
// 搜索条提示
searchController.searchBar.prompt
// 搜索条前景色
searchController.tintColor
// 搜索条主题样式(默认.Prominent(突出) .Minimal(透明))
searchController.searchBar.searchBarStyle