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

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

2016-11-11 10:33 375 查看
原文:http://www.jianshu.com/p/ef140dfb6825

本文在原文的基础上,实现swift3.0

1.在storyboard里面拖入一个 Search Bar 和 一个 tableView。

import UIKit

class ViewController: UIViewController,UISearchBarDelegate,UITableViewDelegate,UITableViewDataSource{

    @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.register(UITableViewCell.self, forCellReuseIdentifier: "cell")

    }

    

    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.lowercased().hasPrefix(searchText.lowercased()) {

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

    }

    

    func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {

        return self.result.count

    }

    

    func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {

        

        let identify: String = "cell"

        

        let cell = tableView.dequeueReusableCell(withIdentifier: identify, for: indexPath) as UITableViewCell

        cell.accessoryType = UITableViewCellAccessoryType.disclosureIndicator

        cell.textLabel?.text = self.result[indexPath.row]

        

        return cell

    }

    

    func searchBarSearchButtonClicked() {

        print("7 searchBarSearchButtonClicked")

        

        searchBar.endEditing(true)

    }

    

    override func didReceiveMemoryWarning() {

        super.didReceiveMemoryWarning()

        // Dispose of any resources that can be recreated.

    }

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