TableView结果错误

时间:2018-06-12 11:22:24

标签: tableview uisearchbar

我有Search Bar UITableView,如果我在searchBar中搜索某些内容,它会在表格视图中打印结果。

如果我搜索“名称01”之类的名称,我点击此名称获取信息,稍后我重新打开搜索栏,我尝试搜索其他名称,如“名称02”,我会看到“名称01” “导致表格视图,我不知道如何清除它。

我也试图刷新Table View但没有成功。

问题视频: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()
                }
            }
        }
    }
}

我想要如果我进行研究,那么使用搜索栏文本的tableview结果会被清理,并且不会显示以前的结果

1 个答案:

答案 0 :(得分:0)

而不是:

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

尝试

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

另一件事,就在

之前
search.start { response, _ in

添加

matchingItems.removeAll()
tableView.reloadData()