我正在使用 Swift 中的 UITableView 和 UISearchBar 开发一个新应用程序,它已经运行良好。但由于最终项目必须有一个完整的自定义搜索栏,我不得不将 UITextField 作为输入 Outlet,因为可以自定义。
问题是我无法弄清楚如何编码,以便 UITextField 的行为类似于 UISearchBar。不知道如何过滤 UITextField 输入并使字符串可用于 UISearchBarDelegate 方法。
所以有人可以帮我解决这个问题吗?
编辑:我按照丹尼尔的帮助想出了这段代码,但它返回“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”。