UITabBarController的viewControllers呈现模态控制器问题

时间:2018-06-08 16:50:30

标签: ios swift uiviewcontroller uimodalpresentationstyle

我有一个带有4个viewControllers设置的UITabBarController。

其中一个控制器有一个按钮,通过以下设置显示另一个控制器(包含在UINavigationController上):

self.definesPresentationContext = true
navController.modalPresentationStyle = .overCurrentContext
navController.modalTransitionStyle = .crossDissolve
self.present(navController, animated: true)

直到这一点工作正常。

现在如果我切换到另一个标签(当前一个模态打开时),并再次返回显示模态的标签(屏幕仍然存在,那没关系)。然后,如果我关闭模态(从一个按钮),模态被解除但控制器视图已经消失(白色),然后如果我切换到另一个选项卡并再次返回选项卡,视图正确加载。

注意:对于这种情况,我需要overCurrentContext,不想阻止UITabBarController(使用fullScreen)..也可以尝试使用.currentContextcustom

1 个答案:

答案 0 :(得分:1)

如果这是我演示here的相同错误,我给出的解决方法是阻止用户在此选项卡显示所呈现的视图控制器时切换到另一个选项卡:

override func viewDidLoad() {
    super.viewDidLoad()
    self.tabBarController?.delegate = self
}
extension FirstViewController : UITabBarControllerDelegate {
    func tabBarController(_ tabBarController: UITabBarController, shouldSelect viewController: UIViewController) -> Bool {
        return self.presentedViewController == nil
    }
}