从堆栈中删除所有 navigationControllers 并创建一个新的导航流程设置 new window - 最佳实践

Remove all navigationControllers from stack and create a new navigation flow setting new window - best practices

这可能是一个新手问题 - 我在应用程序委托中创建了一个流程,设置第一个 window a NavigationController,如下所示:

let window = UIWindow(frame: UIScreen.main.bounds)
let root = SplashViewController(nibName: "SplashViewController", bundle: nil)
window.rootViewController = UINavigationController(rootViewController: root)
window.makeKeyAndVisible()

self.window = window

这个 SplashViewController 是我的第一个流程(教程、登录和注册)的根,我为每个流程创建一个新的 navControll(模态等)

问题是:此流程完成后,用户进入 HomeViewController - 这里我必须清理一下。从堆中删除我的旧流程,使 'start' 应用程序一切正常。

我一直在搜索,许多人使用创建一个新的 window 调用 AppDelegate 单例 - 这是一个好的做法吗? (我已经尝试过,但我的 Splash 仍然存在)- 顺便说一句,我正在播放关于该 Splash 的视频作为背景。

我也尝试过发出通知以关闭我的流程,但我的 Splash 仍然存在.. 如果您需要更多上下文,请告诉我。

感谢任何帮助!提前致谢!

在AppDelegate函数中定义最简单的方式如

func changeRootToNewVC() {
    let newRoot = NewViewController(nibName: "NewViewController", bundle: nil)
    self.window?.rootViewController = newRoot
}

这将更改当前 window 的 rootViewController。这已经足够了,您不需要创建新的 Window 对象。