1.在storyboard里面拖入一個 Search Bar 和 一個 tableView。
2.創(chuàng)建ViewController,實(shí)現(xiàn)代理:UISearchBarDelegate,UITableViewDataSource,UITableViewDelegate.
代碼實(shí)現(xiàn)如下:
@IBOutlet weak var searchBar: UISearchBar!
@IBOutlet weak var tableView: UITableView!
let array = ["beijing", "shanghai","guangzhou","shenzhen" ,"changsha","wuhan","tianjing","hangzhou"]
var result = [String]()
override func viewDidLoad() {
super.viewDidLoad()
// 搜索內(nèi)容為空時,顯示全部內(nèi)容
self.result = self.array
self.searchBar.delegate = self
self.tableView.delegate = self
self.tableView.dataSource = self
self.searchBar.placeholder = "搜索"
// 注冊tableviewCell
self.tableView.registerClass(UITableViewCell.self, forCellReuseIdentifier: "cell")
}
// tableview 代理方法
extension ViewController:UITableViewDataSource,UITableViewDelegate {
func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return self.result.count
}
func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
let identify: String = "cell"
let cell = tableView.dequeueReusableCellWithIdentifier(identify, forIndexPath: indexPath) as UITableViewCell
cell.accessoryType = UITableViewCellAccessoryType.DisclosureIndicator
cell.textLabel?.text = self.result[indexPath.row]
return cell
}
}
// UISearchBar 代理方法
// 每次改變搜索內(nèi)容時候調(diào)用此方法
extension ViewController: UISearchBarDelegate {
func searchBar(searchBar: UISearchBar, textDidChange searchText: String) {
print("[ViewController searchBar] searchText: \(searchText)")
// 沒有搜索內(nèi)容時顯示全部內(nèi)容
if searchText == "" {
self.result = self.array
} else {
// 匹配用戶輸入的前綴,不區(qū)分大小寫
self.result = []
for arr in self.array {
if arr.lowercaseString.hasPrefix(searchText.lowercaseString) {
self.result.append(arr)
}
}
}
// 刷新tableView 數(shù)據(jù)顯示
self.tableView.reloadData()
}
// 搜索觸發(fā)事件,點(diǎn)擊虛擬鍵盤上的search按鈕時觸發(fā)此方法
func searchBarSearchButtonClicked(searchBar: UISearchBar) {
searchBar.resignFirstResponder()
}
// 書簽按鈕觸發(fā)事件
func searchBarBookmarkButtonClicked(searchBar: UISearchBar) {
print("搜索歷史")
}
// 取消按鈕觸發(fā)事件
func searchBarCancelButtonClicked(searchBar: UISearchBar) {
// 搜索內(nèi)容置空
searchBar.text = ""
self.result = self.array
self.tableView.reloadData()
}
}
實(shí)現(xiàn)效果如下:

D42BD2DA-EEE9-464B-B99F-1B47A8598E69.png

AD7D42DE-67F1-48F8-8CE0-5E4FF8B48A34.png