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

标签 ios swift memory stack navigationcontroller

这可能是一个新手问题 - 我在应用程序委托(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/

相关文章:

r - 如何在 Shiny 的应用程序中使用多个过滤器有效处理数据

java - 堆大小大于-Xmx

xml - 解析大型 PLIST 和内存占用

ios - Collection View 设计布局 Ios

swift - UISlider 在 ViewDidLoad() 中没有 subview

swift - 添加框架后未在应用程序上加载库

ios - 如何使用分钟数据过滤特定的一天时间作为 Swift 3 中多个索引中的单个索引存储到数组中

ios - 注释未与核心数据一起出现

ios - 构建自己的 iOS 静态库 - 与其他框架链接

iphone - 可达性中的 UIAlertView 异常