在UISearchController中的取消按钮

24
在我的项目中,我使用带有内部UISearchControllerUITableViewController来过滤我的tableView中的数据。我没有问题来过滤数据,但是当我点击UISearchControllerCANCEL按钮时,我需要使我的tableView重新加载日期,但我找不到解决此问题的委托方法...你能帮我理解如何解决这个问题吗?
4个回答

53

您需要设置UISearchControllersearchBardelegate。完成此操作后,将会正确调用委托方法searchBarCancelButtonClicked:

self.searchController.searchBar.delegate = self;

- (void)searchBarCancelButtonClicked:(UISearchBar *)searchBar {
}

1
最好能够稍微解释一下! - gsamaras
1
@G.Samaras 这是SearchBar的委托方法...searchController直接使用searchbar委托,所以只需在文件头中调用UISearchBarDelegate并将searchbar委托(self.searchController.searchBar.delegate = self;)放在viewDidLoad或其他实现文件中使用的方法中...然后您可以'调用SearchBar searchBarCancelButtonClicked委托方法内的代码,并在其中指定应运行取消按钮的函数。 - kAiN
@Gargoyle 感谢你的一切! - kAiN

21
如果你实现了UISearchResultsUpdating协议,当activefalse时,你就可以知道何时会触发取消操作。
func updateSearchResultsForSearchController(searchController: UISearchController) {
    if !searchController.isActive {
        print("Cancelled")
    }
}

如果你想在这里解散,请异步执行。 - djdance

3

Swift 5

searchBar.delegate = self
.......

extension YourClass: UISearchBarDelegate {
    func searchBarCancelButtonClicked(_ searchBar: UISearchBar){} 
}

0
let searchController = UISearchController(searchResultsController: nil)

searchController.searchBar.delegate = self


extension SearchViewController: UISearchBarDelegate {
    func searchBarCancelButtonClicked(_ searchBar: UISearchBar){} 
}

你的回答可以通过添加更多关于代码的功能和如何帮助提问者的信息来改进。 - undefined

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接