Swift3 UISearchBar没有正常工作

时间:2017-07-03 06:53:20

标签: swift swift3 uisearchbar

我使用UISearchBar搜索地址簿&显示结果。

在我的地址簿中,有Kate Bell,Anna Haro,Daniel Higgins等。

首先尝试:"凯特贝尔"让我看对了。

enter image description here

第二次尝试:" Anna Haro"告诉我凯特&安娜。

enter image description here

然后第三次尝试:" Daniel Higgins" ......从这一刻起,UISearchBar无法给我正确的结果......

enter image description here

我不知道有什么问题&如何解决这个问题....

我在下方添加了我的快捷代码..

var searchActive : Bool = false
var data:[String] = []
var filtered:[String] = []

override func viewDidLoad() {
    super.viewDidLoad()

    searchBar.delegate = self
    friendsTableView.delegate = self
    friendsTableView.dataSource = self
}

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

    if(searchActive) {
        return filtered.count
    }
    return contacts.count;
}

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

    let cell : ContactTableViewCell = tableView.dequeueReusableCell(withIdentifier: "ContactTableViewCell", for: indexPath) as! ContactTableViewCell
    let cell2 = tableView.dequeueReusableCell(withIdentifier: "ContactTableViewCell")! as UITableViewCell;

    let entry = contacts[(indexPath as NSIndexPath).row]

    cell.configureWithContactEntry(entry)
    cell.layoutIfNeeded()

    if(searchActive){
        cell2.textLabel?.text = filtered[indexPath.row]
    } else {
        cell2.textLabel?.text = data[indexPath.row]
    }

    return cell
}

func searchBarTextDidBeginEditing(_ searchBar: UISearchBar) {
    searchActive = true;
}

func searchBarTextDidEndEditing(_ searchBar: UISearchBar) {
    searchActive = false;
}

func searchBarCancelButtonClicked(_ searchBar: UISearchBar) {
    searchActive = false;
}

func searchBarSearchButtonClicked(_ searchBar: UISearchBar) {
    searchActive = false;
}

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

    filtered = data.filter({ (text) -> Bool in
        let tmp: NSString = text as NSString
        let range = tmp.range(of: searchText, options: NSString.CompareOptions.caseInsensitive)
        return range.location != NSNotFound
    })
    if(filtered.count == 0){
        searchActive = false;
    } else {
        searchActive = true;
    }
    self.friendsTableView.reloadData()
}

1 个答案:

答案 0 :(得分:3)

这是我的方法: -

{{1}}