Ich möchte das Suchergebnis eines SearchBar in einem TableView anzeigen und ich weiß nicht wie.Wie man Daten in der Tabellenansicht lädt Ergebnis der Suchleiste swift
wenn ich ein Ziel im TextField- geben, ist alles ganz gut funktioniert, aber wenn ich in der SearchBar Typ funktioniert nicht:
Hier ist, wie ein nennen func zur Suche in [String]:
extension ViewController: UITextFieldDelegate {
public func textField(_ textField: UITextField, shouldChangeCharactersIn range: NSRange, replacementString string: String) -> Bool {
let substring = (textField.text! as NSString).replacingCharacters(in: range, with: string)
DestinoP.searchDestinos(substring)
return true
}}
hier ist, wie das Ergebnis zeigen:
extension ViewController: UITableViewDataSource {
public func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCell(withIdentifier: "cell", for: indexPath) as UITableViewCell
let index = indexPath.row as Int
isSearching = true // this is just for SearchBar
if isSearching {
if let str = autoCompleteDestino[index].desDestino {
cell.textLabel?.text = str
}
}
return cell
}}
Erweiterung Viewcontroller: UITableViewDelegate {
public func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
if isSearching { // this is just for SearchBar
return autoCompleteDestino.count
}
return autoCompleteDestino.count
}
public func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
let selectedCell: UITableViewCell = tableView.cellForRow(at: indexPath)!
destinoSearch.text = selectedCell.textLabel!.text!
busquedaDestinosText.text = selectedCell.textLabel!.text!
}}
das ist, wie ich versuche, das Ergebnis zu zeigen, wenn ich in der SearchBar Typ:
extension ViewController: UISearchBarDelegate {
func searchBar(_ searchBar: UISearchBar, textDidChange searchText: String) {
let stringOfUser = (busquedaDestinosText.text)
DestinoP.searchDestinos(stringOfUser!)
if destinoSearch.text == "" {
isSearching = false
view.endEditing(true)
tableView.reloadData()
print(isSearching)
} else {
isSearching = true
print(isSearching)
print(autoCompleteDestino)
}
}}
kann mir helfen?
Hallo Malik..danke! aber in diesem Fall füge ich die Suchleiste in das Storyboard @IBOutlet schwach var destinoSearch: UISearchBar! (nicht programmatisch). Und der Weg, um die "gefilterten Daten oder AutoCompleteDestino in meinem Fall" zu zeigen, ist dies: wenn let str = autoCompleteDestino [index] .desDestino { cell.textLabel? .text = str } Wie zeigen Sie die AutoCompleteDestino bei der Eingabe in der SearchBar? – xhinoda
Sie müssen noch die searchBar 'delegate' Methoden einbinden. Diese Methoden wiederum filtern die Daten aus und laden 'tableView' erneut – Malik