这可能是一个新手问题 - 我在应用程序委托(delegate)中创建了一个流程,将第一个窗口设置为 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
- 在这里我必须清理东西。从堆中删除我的旧流程,使一切正常以“启动”应用程序。
我一直在搜索,许多人使用创建一个调用 AppDelegate 单例的新窗口 - 这是一个好的做法吗? (我已经尝试过,但我的 Splash 仍然存在)- 顺便说一句,我正在播放关于该 Splash 的视频作为背景。
我也尝试过发出通知以关闭我的流程,但我的 Splash 仍然存在.. 如果您需要更多背景信息,请告诉我。
感谢任何帮助!提前致谢!
最佳答案
在 AppDelegate 函数中定义的最简单方法,如
func changeRootToNewVC() {
let newRoot = NewViewController(nibName: "NewViewController", bundle: nil)
self.window?.rootViewController = newRoot
}
这将更改当前窗口的 rootViewController。这就足够了,您不需要创建新的 Window 对象。
关于ios - 从堆栈中删除所有 navigationControllers 并创建一个新的导航流设置新窗口 - 最佳实践,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41917894/