Swift で UITableView と UISearchBar を使用して新しいアプリを作成していますが、既に正常に動作しています。しかし、最終的なプロジェクトには完全にカスタマイズされた検索バーが必要なので、カスタマイズの可能性があるため、入力アウトレットとして UITextField に移動する必要がありました。
問題は、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」でしたが、配列のオブジェクトの1つが「ar」であるため、返されるべきではないときに「nil」が返されました。