关于我们观点设定的一些背景知识:
在NavigationController
内,我们有一个UITabBarController
(包含3个标签页),其中UIViewController
的{{1}}为UISearchController
。
如果我们让UISearchController
处于活动状态并切换到另一个视图,则会出现错误,当我们返回搜索视图时,整个屏幕都是黑色的。
但是,当UISearchController
未激活且我们切换视图时,这不会发生。
我们尝试在视图之间进行隔离时将控制器设置为不活动;但是,当UISearchController
处于活动状态时,不会调用任何segueing事件(viewWillDissapear
,viewWillAppear
等不显示日志打印件)
查看其他主题,我们尝试设置self.definesPresentationContext = true
但这不起作用。
是否有其他人遇到此问题或知道如何解决此问题?
答案 0 :(得分:2)
尝试将searchbarController设置为像这样
self.resultSeachController.active = false
在您移动下一个视图
之前答案 1 :(得分:0)
我遇到了同样的问题并解决了如下问题:
我延长了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'是显示的Tab(和视图控制器)的索引,因此可以访问searchController处于活动状态的viewController。
在我的应用程序中,所有视图控制器都是名为CommonViewController
的根类的子类,其中我放置了所有视图控制器共有的所有变量和方法,例如所有搜索功能。因此,我只是检查搜索控制器是否处于活动状态,如果是,我调用一个使其处于非活动状态并进行其他相关清理的方法。