Ios 切换视图时如何使UISearchController处于非活动状态

Ios 切换视图时如何使UISearchController处于非活动状态,ios,swift,uitabbarcontroller,uisearchbar,uisearchcontroller,Ios,Swift,Uitabbarcontroller,Uisearchbar,Uisearchcontroller,关于我们观点设置的一点背景: 在NavigationController中,我们有一个UIAbbarController(带3个选项卡),其中有一个UIViewController,它有一个UISearchController 有一个错误,如果我们将UISearchController保持活动状态并切换到另一个视图,当我们返回到搜索视图时,整个屏幕都是黑色的。 但是,当UISearchController未激活且我们切换视图时,不会发生这种情况 我们尝试将控制器设置为在视图之间切换时不处于活动状

关于我们观点设置的一点背景:

NavigationController
中,我们有一个
UIAbbarController
(带3个选项卡),其中有一个
UIViewController
,它有一个
UISearchController

有一个错误,如果我们将
UISearchController
保持活动状态并切换到另一个视图,当我们返回到搜索视图时,整个屏幕都是黑色的。 但是,当
UISearchController
未激活且我们切换视图时,不会发生这种情况

我们尝试将控制器设置为在视图之间切换时不处于活动状态;但是,当
UISearchController
处于活动状态时,不会调用任何分段事件(不会从
viewwilldisapear
viewwilldisapear
等显示日志打印)

查看其他线程,我们尝试设置
self.definesPresentationContext=true
但这是行不通的


其他人是否有此问题或知道如何解决此问题?

请尝试将searchbarController设置为活动状态,如下所示

self.resultSeachController.active = false

在继续下一个视图之前

我遇到了同样的问题,并按如下方式解决了它:

我扩展了
UITabBarController
并创建了一个自定义类
TabBarController

class TabBarController: UITabBarController  {
在该类中,我实现了它的
didSelectItem
方法,在该方法中,我调用了视图控制器的一个方法,该方法关闭了搜索控制器

// UITabBarDelegate
override func tabBar(tabBar: UITabBar, didSelectItem item: UITabBarItem) {
    let vc = viewControllers![selectedIndex] as! CommonViewController
    if vc.searchController.active {
        vc.searchBarCancelButtonClicked_NoReload()
    }
}
viewControllers
UITabBarController
中的一个数组,用于保存属于
UITabBarController
的所有视图控制器,而“selectedIndex”是显示的选项卡(和视图控制器)的索引,因此可以访问激活了searchController的viewController


在我的应用程序中,所有视图控制器都是名为
CommonViewController
的根类的子类,我在其中放置了所有视图控制器通用的所有变量和方法,例如所有搜索功能。因此,我只需检查搜索控制器是否处于活动状态,如果处于活动状态,我将调用一个使其处于非活动状态的方法,并执行一些其他相关清理。

是否可以添加代码,我有一个类似的设置,我没有在
UISearchController
中遇到任何此类问题。您是否确保
视图中没有自定义代码将消失
扰乱搜索控制器?设置
self.definesPresentationContext=true
起初对我也不起作用,因为在我尝试删除
视图上的搜索控制器之前,它将消失
。一旦我删除了那个代码,它就起作用了(搜索控制器在切换标签时保持不变,没有黑屏)。有什么解决办法吗?我也有同样的问题,设置
self.definesPresentationContext=true
只是隐藏导航栏和我的搜索栏