ios - 在 swift 中使用 tableview 和数组过滤器自动完成文本字段

标签 ios arrays iphone swift uitableview

所以,我有一个 tableview 、一个文本字段和一个包含一些数据的数组。我想要实现的是,每当我开始在文本字段中输入时,一个 filter() 方法应该在我的包含数据的数组上触发,并且 tablview 应该返回与我在文本字段中输入的字符匹配的数据。

例如,如果我输入 W,它应该给出“Walmart”、“Wally”、“Wily”等结果。如果我输入“Sac”,它应该给出“sacramento”、“satisfied”等. 简而言之,一个完全不使用任何外部库的自动完成文本字段。

我知道这很简单,我试过这样做但我得到的数据为零。另外,我是 swift 的新手。请帮助任何人:-)

最佳答案

看看这个link

对于我的情况,这是 UISearchbar 的解决方案。我正在获取字典数组并执行搜索

//MARK:- search items & reload table
func filter(array : [[String : [MyModel]]], byString filterString : String) {
    let searchByNamesArray = array.filter { $0.values.contains { $0.contains { $0.nameString.lowercased().contains(filterString.lowercased())} } }
    //Assign searched array into arrayOfMerchants
    self.arrayOfItems = searchByNamesArray
    //Reload table with new Data
    self.merchantTableView.reloadData()
}

搜索条形码

   func searchBarSearchButtonClicked(_ searchBar: UISearchBar) {
        searchBar.resignFirstResponder()
        if !((searchBar.text?.isEmpty)!){
            filter(array: self.arrayOfItems, byString: searchBar.text!)
        }
    }

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

        if (searchBar.text?.isEmpty)!  //in case there is no text in Searchbar, reload all record
        {
            self.arrayOfItems = self.arrayOfRecordsHolding  //array of original record holder
            self.merchantTableView.reloadData()
        }
        else
        {
            self.arrayOfItems = self.arrayOfRecordsHolding
            filter(array: self.arrayOfMerchants, byString: searchBar.text!)
        }
    }

    func searchBarCancelButtonClicked(_ searchBar: UISearchBar) {
        //reload all data when cancel button pressed on searchbar
        self.arrayOfItems = self.arrayOfRecordsHolding
        searchBar.text = ""
        self.merchantTableView.reloadData()
        searchBar.resignFirstResponder()
    }

关于ios - 在 swift 中使用 tableview 和数组过滤器自动完成文本字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49609594/

相关文章:

ios - 在 Windows 中打开 Xcode 项目

ios - 更新位置时 map View 跨度发生变化

ios - 过滤 NSMutableArray 并将其保存回自身

iOS 将音频采样率从 16 kHz 转换为 8 kHz

ios - 当 viewDidLoad 设置 textField 可编辑/启用键盘时

Java计算字节数组位数的方法

arrays - json 响应的 Bash 脚本条件

C++:传递从 vector 获取的数组指针时的EXC_BAD_ACCESS

iphone - 类似于 iPhone 版 Twitter 的导航风格

ios - 如何使用 AWS Cognito 联合身份登录 Instagram