如何解雇 UISearchController? (iOS8和后续)

这一定是琐碎的,但是我不能找到您应该如何以编程方式解雇 UISearchController?

注意,它是新的 UISearchController (2014年随 iOS8引入) ,而不是 UISearchDisplayController。

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

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

但是我还有取消按钮,没办法去掉。

34392 次浏览

好的,经过更多的测试,你只需要设置:

searchController.active = false
// or swift 4+
searchController.isActive = false

这是我尝试的第一个方法,但是我在一个 UISearchControllerDepate 方法中调用了它,但是这个方法不起作用(可能本应该使用 )(halbano 的回答似乎证实了这一点)。

不管怎样,既然我在网上找不到答案,我就回答我自己的问题,我希望它能帮到别人。

在切换到另一个视图后尝试关闭搜索控制器时,您遇到过这个问题吗?我也遇到过这个问题。我觉得你可能想用

self.definesPresentationContext = true

在视图控制器中显示 UISearchController,如本文 当推送视图时,UISearchController 不会被解雇所示。

我展示了嵌入在导航条上的地雷,对我有效的代码是:

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

希望能帮到别人。

我在使用搜索和交互控制器时遇到了这个问题,在加入以下代码后就解决了: 视图控制器动画(错误,完成: 无)

打开交互并在不更改委托的情况下清除搜索。

SWIFT 4 +

searchController.isActive = false