Я хотел бы отобразить все названия городов в табличном представлении в зависимости от того, что пользователь вводит в панели поиска. Например, если пользователь вводит «New York» внутри панели поиска, я хочу, чтобы отображались все результаты, которые дает мне API. Я использую API, который возвращает JSON данные.
Прямо сейчас я использую методы этого делегата:
extension searchViewController : UISearchBarDelegate{
func searchBarSearchButtonClicked(_ searchBar: UISearchBar) {
RequestAPI.queryCities(cityNameString: searchBar.text!) { (cities) in
for iterator in 0...cities.geonames.count-1 {
self.citiesQueried.append(cities.geonames[iterator])
}
}
self.tableView.reloadData()
}
func searchBarCancelButtonClicked(_ searchBar: UISearchBar) {
print("cancel button clicked")
self.citiesQueried.removeAll()
self.tableView.reloadData()
}
}
townsQueried - это массив, который я ранее объявил пустым в viewController Задача an состоит в сборе всех данных, полученных в результате запроса API.
Это методы делегата UITableView:
extension searchViewController : UITableViewDelegate, UITableViewDataSource{
func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return citiesQueried.count
}
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCell(withIdentifier: "searchCityTableViewCell", for: indexPath)
cell.textLabel?.text = self.citiesQueried[indexPath.row].name
return cell
}
}
Проблема в том, что когда-то это работает, а иногда нет t и мне нужно нажать 2 раза кнопку поиска, чтобы увидеть города, отображаемые в таблице. Я думаю, что-то не хватает, я надеюсь, что некоторые из вас могли бы дать мне предложение о том, как решить эту проблему