从堆栈中删除所有 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 对象。
这可能是一个新手问题 - 我在应用程序委托中创建了一个流程,设置第一个 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 对象。