У меня проблема с tableView, где я отображаю некоторые значения для выбора пользователем.Он связан с панелью поиска, которая фильтрует содержимое в массиве, отображаемом в TableView.
Таким образом, проблема заключается в следующем: Когда я ищу элемент, tableView отлично фильтрует, отображая правильный элемент.Но если я решу выбрать этот элемент, он будет отображать первый элемент, который был показан с начала, то есть с загрузки всех элементов в textView.Как будто мой tableView отображает только текст, но не правильный indexPath при поиске.
Вот код:
extension SelectCityViewController: UITableViewDataSource, UITableViewDelegate {
public func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
if searching {
return searchCity.count
} else {
return citiesItems.count
}
}
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCell(withIdentifier: "cell")
if searching {
cell?.textLabel?.text = searchCity[indexPath.row]
} else {
cell?.textLabel?.text = citiesItems[indexPath.row]
}
return cell!
}
func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
toastMessage(message: "\(citiesItems[indexPath.row]) selected")
SelectCityViewController.selectedCity="\(citiesItems[indexPath.row])"
self.removeAnimate()
}
}
extension SelectCityViewController: UISearchBarDelegate {
func searchBar(_ searchBar: UISearchBar, textDidChange searchText: String) {
searchCity = citiesItems.filter({$0.lowercased().prefix(searchText.count) == searchText.lowercased()})
searching = true
tableView.reloadData()
}
func searchBarCancelButtonClicked(_ searchBar: UISearchBar) {
searching = false
searchBar.text = ""
tableView.reloadData()
}