我有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结果会被清理,并且不会显示以前的结果
答案 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()