我正在使用Swift中的UITableView和UISearchBar开发一个新的应用程序,它已经正常运行。但由于最终项目必须具有完全定制的搜索栏,因此我不得不将输入输出口移动到UITextField上,以便可以进行自定义。
问题在于,我无法想象如何编写代码,让UITextField的行为类似于UISearchBar。我不知道如何过滤UITextField的输入并使字符串可用于UISearchBarDelegate方法。
所以有人能帮帮我吗?
编辑:我按照Daniel的帮助编写了这段代码,但返回值为“nil”,无法工作。
class ViewController: UIViewController, UITableViewDataSource, UITableViewDelegate, UITextFieldDelegate {
@IBOutlet weak var txtSearchBar: UITextField!
var searchTxt = ""
let prods = ["água", "terra", "ar", "fogo"]
var searchResults:[String] = []
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view, typically from a nib.
txtSearchBar.delegate = self
}
func textFieldDidEndEditing(textField: UITextField) {
searchTxt = textField.text
println(searchTxt)
searchResults = prods.filter({(produtos:String) -> Bool in
let nameMatch = produtos.rangeOfString(self.searchTxt, options: NSStringCompareOptions.CaseInsensitiveSearch)
println(nameMatch)
return nameMatch != nil})
}
我的输入是字母“ar”,但返回了“nil”,这是不应该的,因为数组中有一个对象是“ar”。