swift 搜索框(UISearchBar)實(shí)現(xiàn)簡單的搜索功能

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
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 發(fā)現(xiàn) 關(guān)注 消息 iOS 第三方庫、插件、知名博客總結(jié) 作者大灰狼的小綿羊哥哥關(guān)注 2017.06.26 09:4...
    肇東周閱讀 15,172評論 4 61
  • 概述在iOS開發(fā)中UITableView可以說是使用最廣泛的控件,我們平時使用的軟件中到處都可以看到它的影子,類似...
    liudhkk閱讀 9,289評論 3 38
  • 小結(jié):ndarray數(shù)組的屬性,數(shù)組的創(chuàng)建。 Numpy是Python的一個科學(xué)計算的庫,提供了矩陣運(yùn)算的功能,其...
    小雙2510閱讀 233評論 0 0
  • 就像品讀一本佳作時很難感受時間流逝,在老人身邊長大的我不曾想過年齡上增加的數(shù)字意味著什么。直到某一天奶奶需要攙扶著...
    傘柏閱讀 263評論 0 1
  • 什么是女強(qiáng)人?女強(qiáng)人就是要拋棄掉女人撒嬌的嗜好,不要輕易流淚;職業(yè)技能不僅要基礎(chǔ)結(jié)實(shí),更要高樓大廈;做事快、準(zhǔn)...
    樂簡家閱讀 527評論 0 3

友情鏈接更多精彩內(nèi)容