你如何解雇一个UISearchController? (iOS 8和后续)

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

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

到目前为止,这是我得到的

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

但我仍然有取消button,不能摆脱它。

好了,经过更多的testing,结果你只需要设置:

 searchController.active = false 

这是我尝试的第一件事,但我调用了一个UISearchControllerDelegate方法,它不起作用(可能应该用dispatch_async调用它(halbano的答案似乎证实了这一点))。

无论如何,因为我无法在网上find答案,我正在回答我自己的问题,我希望它能帮助别人。

当您尝试在转到另一个视图后解除search控制器时,是否有这个问题? 我也遇到过这个问题。 我想你可能想用

 self.definesPresentationContext = true 

在按照这个post显示UISearchController的视图控制器中, 当View被推入时,UISearchController不会被解除 。 这个对我有用。

我正在将导航栏embedded导航栏中。 适用于我的代码是:

 - (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; }); } 

希望它可以帮助别人。

我有这个问题使用search和interactionController,解决后,只包括行:self.dismissViewControllerAnimated(假,完成:零)

打开交互并清除search,而不会改变委托。