【问题标题】:UISearchController issue swift iosUISearchController 问题 swift ios
【发布时间】:2015-09-09 19:19:48
【问题描述】:

我有一个带有搜索栏的表格视图。我可以搜索并显示正确的结果。当我点击取消时,我的 tableview 得到了所有数据,这很好。我想要实现的是,在搜索时,如果我点击键盘上的返回按钮,并且当我的搜索栏为空时,我希望显示我的初始数据。这是我的搜索代码。 基本上这是我们在 iPhone 上工作的联系人通讯录。

欢迎任何帮助。

 func setupSearchBar() {
        searchController = self.addSearchBar()
        searchController.searchResultsUpdater = self
        searchController.delegate = self
        searchController.searchBar.delegate = self
    }
func updateSearchResultsForSearchController(searchController: UISearchController) {
        if count(searchController.searchBar.text) > 0 {
            tableData = MyCoreData().search(searchController.searchBar.text)
            self.tableView.reloadData()
        }
    }

func searchBarCancelButton(searchBar: UISearchBar) {
    searchBar.text = ""
    self.resignFirstResponder()
    self.view.endEditing(true)
    searchBar.resignFirstResponder()
    reloadTableDataFromDB()
}

func searchBarTextDidEndEditing(searchBar: UISearchBar) {
}

【问题讨论】:

  • 只需放置一个 else 来处理 searchBar.text 为空,然后返回所有内容。
  • 你介意举个例子。我试图在这个函数 updateSearchResultsForSearchController 中有一个 else 部分,然后重新加载 tableview 数据但结果相同
  • 在其他部分,检查您的数据是什么。是空的吗?

标签: ios swift


【解决方案1】:

您的 updatesearch 函数缺少用于返回默认加载数据的 else 部分。这样做:

 func setupSearchBar() {
        searchController = self.addSearchBar()
        searchController.searchResultsUpdater = self
        searchController.delegate = self
        searchController.searchBar.delegate = self
    }
func updateSearchResultsForSearchController(searchController: UISearchController) {
        if count(searchController.searchBar.text) > 0 {
            tableData = MyCoreData().search(searchController.searchBar.text)
            self.tableView.reloadData()
        } else {
        return self.reloadDataFromDB()
}
    }

func searchBarCancelButton(searchBar: UISearchBar) {
    searchBar.text = ""
    self.resignFirstResponder()
    self.view.endEditing(true)
    searchBar.resignFirstResponder()
    reloadTableDataFromDB()
}

func searchBarTextDidEndEditing(searchBar: UISearchBar) {
}

【讨论】: