UITabBarController 的 viewControllers 存在模态控制器问题

UITabBarController's viewControllers present modal controller issue

我有一个带有 4 个视图控制器设置的 UITabBarController。

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

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

到此为止一切正常。

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

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

如果这是我演示的同一个错误 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
    }
}