您的位置:首页 > 移动开发 > Swift

swift 搜索框(UISearchBar)实现简单的搜索功能

2016-05-16 16:45 549 查看
1.在storyboard里面拖入一个 Search Bar 和 一个 tableView。

2.创建ViewController,实现代理:UISearchBarDelegate,UITableViewDataSource,UITableViewDelegate.

代码实现如下:

@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()

// 搜索内容为空时,显示全部内容
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 代理方法

// 每次改变搜索内容时候调用此方法

extension ViewController: UISearchBarDelegate {

func searchBar(searchBar: UISearchBar, textDidChange searchText: String) {

print("[ViewController searchBar] searchText: \(searchText)")

// 没有搜索内容时显示全部内容
if searchText == "" {
self.result = self.array
} else {

// 匹配用户输入的前缀,不区分大小写
self.result = []

for arr in self.array {

if arr.lowercaseString.hasPrefix(searchText.lowercaseString) {
self.result.append(arr)
}
}
}

// 刷新tableView 数据显示
self.tableView.reloadData()
}

// 搜索触发事件,点击虚拟键盘上的search按钮时触发此方法
func searchBarSearchButtonClicked(searchBar: UISearchBar) {

searchBar.resignFirstResponder()
}

// 书签按钮触发事件
func searchBarBookmarkButtonClicked(searchBar: UISearchBar) {

print("搜索历史")
}

// 取消按钮触发事件

func searchBarCancelButtonClicked(searchBar: UISearchBar) {
// 搜索内容置空
searchBar.text = ""
self.result = self.array
self.tableView.reloadData()
}

}

实现效果如下:



内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: