这一定是微不足道的,但是我无法找到你应该如何以编程方式解雇UISearchController?
请注意,它是新的UISearchController(2014年推出iOS 8),而不是UISearchDisplayController。
到目前为止,我所拥有的是
// Dismiss the search tableview
searchController.dismissViewControllerAnimated()
// Clear the Search bar text
searchController.active = false
但我仍然有取消按钮,无法摆脱它。
答案 0 :(得分:151)
好的,经过更多的测试,结果证明你只需要设置:
searchController.active = false
// or swift 4+
searchController.isActive = false
这是我尝试过的第一件事,但是我在一个UISearchControllerDelegate方法中调用了它,它没有工作(可能应该用dispatch_async调用它(halbano的答案似乎证实了这一点)。) / p>
无论如何,由于我无法在网上找到答案,我回答了自己的问题,我希望它可以帮助别人。
答案 1 :(得分:19)
当您尝试在转换到另一个视图后解除搜索控制器时,您是否遇到此问题?我也遇到过这个问题。我想你可能想用
self.definesPresentationContext = true
在视图控制器中,根据此帖UISearchController not dismissed when View is pushed显示UISearchController。它对我有用。
答案 2 :(得分:9)
我在导航栏上展示了我的嵌入物。适合我的代码是:
- (void)searchBarCancelButtonClicked:(UISearchBar *)searchBar{
dispatch_async(dispatch_get_main_queue(), ^{
[self.searchController setActive:NO];
self.navigationController.navigationBar.topItem.title = @"MYTITLE".uppercaseString;
self.navigationItem.titleView = nil;
});
}
希望它有所帮助。
答案 3 :(得分:4)
SWIFT 4 +
searchController.isActive = false
答案 4 :(得分:1)
我使用search和interactionController遇到了这个问题,在包含该行之后解决了: self.dismissViewControllerAnimated(false,completion:nil)
打开交互并清除搜索,而无需更改代理。