Ошибка результата TableView - PullRequest
0 голосов
/ 12 июня 2018

У меня есть Search Bar с UITableView, и если я что-то ищу в панели поиска, он выведет результат в табличном представлении.

Если я найду имя, подобное «Имя 01», и янажмите на это имя, чтобы получить информацию, а затем я снова открою панель поиска и попытаюсь найти другое имя, например «Имя 02», в табличном представлении я увижу результат «Имя 01» и не знаю, как его очистить.Это.

Я также пытался обновить табличное представление, но безуспешно.

Видео проблемы: https://streamable.com/98j0w

Код такой

extension LocationSearchTable : UISearchResultsUpdating {
    func updateSearchResults(for searchController: UISearchController) {
        //print("updateSearchResults")

        if searchController.searchBar.text == nil {
            seenNames.removeAll()
            matchingItems.removeAll()
            self.tableView.reloadData()
        }

        guard let mapView = mapView,
        let searchBarText = searchController.searchBar.text else { return }

        let request = MKLocalSearchRequest()
        request.naturalLanguageQuery = searchBarText
        request.region = mapView.region
        let search = MKLocalSearch(request: request)

        search.start { response, _ in
            guard let response = response else {
                return
            }

            for (index , name) in response.mapItems.enumerated() {
                let item = response.mapItems[index]
                if(checkIfItemExistInDatabase(key: String(item.name!)) != nil && !seenNames.contains(name.name!)){
                    matchingItems.append(item)
                    seenNames.insert(name.name!)
                    self.tableView.reloadData()
                }
            }
        }
    }
}

Я хочу, чтобы при проведении исследования результат просмотра таблицы с текстом панели поиска очищался и не отображал ранее полученный результат

1 Ответ

0 голосов
/ 12 июня 2018

Вместо:

if searchController.searchBar.text == nil {
...
...

Попробуйте с

let searchText = searchController.searchBar.text
if searchText == nil || searchText.isEmpty { 
...
...

И еще, прямо перед

search.start { response, _ in

добавьте

matchingItems.removeAll()
tableView.reloadData()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...