你如何解雇UISearchController? (iOS 8及以下版本)

时间:2015-02-10 17:48:29

标签: swift uisearchcontroller

这一定是微不足道的,但是我无法找到你应该如何以编程方式解雇UISearchController?

请注意,它是新的UISearchController(2014年推出iOS 8),而不是UISearchDisplayController。

到目前为止,我所拥有的是

// Dismiss the search tableview
searchController.dismissViewControllerAnimated()
// Clear the Search bar text
searchController.active = false

但我仍然有取消按钮,无法摆脱它。

5 个答案:

答案 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)

打开交互并清除搜索,而无需更改代理。