【问题标题】:How to clear SearchBar result and show full data in tableview using Swift?如何使用 Swift 清除 SearchBar 结果并在 tableview 中显示完整数据?
【发布时间】:2019-10-03 12:50:30
【问题描述】:

我的场景,我正在将JSON 数据加载到tableview 中,我正在为单个tableviewsearch-bar 维护两个段控制器按钮。第一段按钮点击搜索我可以很好地得到搜索结果,如果我点击第二段按钮,也会显示相同的搜索结果。因此,当我单击第 1 到第 2 段时,我需要清除搜索结果并加载正常数据。当我单击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()
    }

【问题讨论】:

  • 表格视图的数据源是什么?
  • 您可以使用布尔类型的变量来维护用户是否正在搜索的状态。并且基于该变量,您可以在用户不搜索时在 tableview 中显示完整数据
  • 你能提供一些更详细的代码吗? @KeyurTailor
  • 您必须过滤结果并再次将其分配给filteredLanguages数组。
  • @Kamran 我的问题是如何在单击我的分段按钮后清除过滤结果。也就是搜索栏 X 按钮进行操作。我也需要这样做。给我一些代码示例。

标签: ios swift xcode uitableview uisearchbar


【解决方案1】:

当段控制选择改变时,你只需要用空文本调用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;
    }
}

【讨论】:

  • 谢谢@RajeshKumar。我之前是通过其他方法完成的。
【解决方案2】:

除了清除搜索栏外,您还需要从数据源中删除过滤。数据源是指您在表格视图中显示的对象数组。您必须使用带有过滤器文本的过滤器函数。如果要清除搜索栏,还需要恢复原始JSON数据(未过滤的),然后调用reloadData

【讨论】:

  • 很好的解释。我正在使用两个数组,一个用于 JSON,另一个用于过滤器。最后过滤我正在使用的所有地方。现在在这个 segbutton 动作中,我想为明确的动作做什么?
  • 使用显示数据的未过滤数组
  • 您必须在回答后关闭问题
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-10-22
  • 2011-12-24
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多