如何使用 Swift 清除 SearchBar 结果并在 tableview 中显示完整数据?

How to clear SearchBar result and show full data in tableview using Swift?

我的场景,我正在将 JSON 数据加载到 tableview 中,我在这里为单个 tableviewsearch-bar 维护两个分段控制器按钮。单击第一个分段按钮进行搜索我可以获得很好的搜索结果,如果我单击第二个分段按钮,也会显示相同的搜索结果。所以,当我点击一到二段时,我需要清除搜索结果并加载正常数据。当我在 searchBar.

中单击关闭按钮时,相同的场景运行良好

我的代码

@IBAction func switchTableviewAction(_ sender: UISegmentedControl) {

        switch sender.selectedSegmentIndex {
        case 0:
            print(“one”)
            self.searchResultClear()
            currentTableView = sender.selectedSegmentIndex
            self.tableView.reloadData()

        case 1:
            print(“two”)
            self.searchResultClear()
            currentTableView = sender.selectedSegmentIndex
            self.tableView.reloadData()

        default:
            break;
        }
    }

    // MARK: Search Result Clear working but not clearing result 
    func searchResultClear() {
        //self.searchBar.text = ""
        //self.searchBar.showsCancelButton = false
        //self.filteredLanguages.removeAll()
        //self.tableView.reloadData()
    }

除了清除搜索栏,您还需要从数据源中删除筛选。数据源是指您在 table 视图中显示的对象数组。您必须将过滤功能与过滤文本一起使用。如果要清除搜索栏,还需要恢复原始 JSON 数据(未过滤的数据),然后调用 reloadData

当段控件选择改变时,您只需要用空文本调用searchBar textDidChange方法

@IBAction func switchTableviewAction(_ sender: UISegmentedControl) {
    switch sender.selectedSegmentIndex {
    case 0:
        self.searchBar(self.searchBar, textDidChange: "")
    case 1:
        self.searchBar(self.searchBar, textDidChange: "")
    default:
        break;
    }
}