Swift 搜索条

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

你可能感兴趣的:(Swift 搜索条)