Otomatik tamamlama ile bir aramaBar'ı uygulamaya çalışıyorum. Yazmaya başladığımdan sonra bir değer olmadığında, bir "Sonuç yok" hücresinin görünmesini istiyorum. Ancak, searchField'ı ilk seçtiğimde veya tüm karakterleri sildiğimde, hücre başarısız olur. SearchField "" olduğunda görünmesini sağlarım, ancak tanımladığım gibi çalışmasını sağlamanın bir yolunu bulamıyorum.Otomatik Tamamlama SearchBar - Bir değer hücresi değil
Kodum:
@IBOutlet weak var searchField: UISearchBar!
@IBOutlet var autocompleteTableView: UITableView!
var pastUrls = ["Men", "Women", "Cats", "Dogs", "Children"]
var autocompleteUrls = [String]()
var searchActive : Bool = false
override func viewDidLoad() {
super.viewDidLoad()
searchField.delegate = self
autocompleteTableView.backgroundColor = UIColor.clearColor()
autocompleteTableView!.delegate = self
autocompleteTableView!.dataSource = self
autocompleteTableView!.scrollEnabled = true
autocompleteTableView!.hidden = true
}
func searchBar(searchBar: UISearchBar, shouldChangeTextInRange range: NSRange, replacementText text: String) -> Bool {
autocompleteTableView.hidden = false
let substring = (searchBar.text! as NSString).stringByReplacingCharactersInRange(range, withString: text)
searchAutocompleteEntriesWithSubstring(substring)
return true
}
func searchAutocompleteEntriesWithSubstring(substring: String) {
autocompleteUrls.removeAll(keepCapacity: false)
for curString in pastUrls {
if curString.lowercaseString.rangeOfString(substring) != nil {
autocompleteUrls.append(curString)
}
}
autocompleteTableView!.reloadData()
}
func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return autocompleteUrls.count
}
func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
var cell = tableView.dequeueReusableCellWithIdentifier("cell")
if let _ = cell {
let index = indexPath.row as Int
cell!.textLabel!.text = autocompleteUrls[index]
} else {
cell = UITableViewCell(style: UITableViewCellStyle.Value1, reuseIdentifier: "cell")
}
return cell!
}