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

来源:互联网 发布:数据库做学生管理系统 编辑:程序博客网 时间:2024/06/05 07:15

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

}

实现效果如下:




0 0
原创粉丝点击