以编程方式从 UITabBarController 正确导航到 UIViewController (Swift - UIKit),反之亦然

问题描述

实际上,我的应用程序是这样制作的:

  1. 一个登陆屏幕,我在其中显示已保存游戏的集合视图(底部的滑块)
  2. 一个自定义标签栏,我有 5 个设置视图控制器(导航栏中有公共项目)
  3. 游戏画面有自己的导航栏,不再有标签栏。

Here is a presentation of those screens

我想我的转换方式是错误的:我注意到每次前进/后退这 3 个元素时内存使用量都会增加,就像我的 VC 堆积在显示的屏幕下方一样。

我尝试了 5 种设置 VC 中的 2 种方式来呈现游戏玩法:

第一:

    private func goGamePlay() {
    let gamePlay = GamePlayViewController()
    gamePlay.modalPresentationStyle = .fullScreen
    let transition = CATransition()
    transition.duration = 0.3
    transition.type = CATransitionType(rawValue: "flip")
    transition.subtype = CATransitionSubtype.fromLeft
    transition.timingFunction = camediatimingFunction(name:camediatimingFunctionName.easeInEaSEOut)
    self.view.window!.layer.add(transition,forKey: kCATransition)
    self.present(gamePlay,animated: false,completion: nil)
}

第二:

    private func goGamePlay() {
    let gamePlay = GamePlayViewController()
    gamePlay.modalPresentationStyle = .fullScreen
    let transition = CATransition()
    transition.duration = 0.3
    transition.type = CATransitionType(rawValue: "flip")
    transition.subtype = CATransitionSubtype.fromLeft
    transition.timingFunction = camediatimingFunction(name:camediatimingFunctionName.easeInEaSEOut)
    self.view.window!.layer.add(transition,forKey: kCATransition)
    weak var topVC = UIApplication.shared.keyWindow?.rootViewController
    while((topVC!.presentedViewController) != nil) {
        topVC = topVC!.presentedViewController
    }
    topVC?.present(gamePlay,completion: nil)
}

在这两种情况下,呈现单个 gamePlayVC 都不允许我显示我的新自定义导航栏。

最后,有点乱。 你有什么建议可以帮助我正确地做吗? (顺便说一句,它需要兼容iOS 12)

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)