gpt4 book ai didi

ios - 将 viewController 设置为根 viewController 的正确方法

转载 作者:行者123 更新时间:2023-11-28 06:38:55 25 4
gpt4 key购买 nike

在您有一个 viewController 的场景中,您希望将其作为 Root View 呈现在所有其他内容之上,正确的方法是什么?

let Storyboard = UIStoryboard.init(name: "Main", bundle: nil)
let MY_VIEW = Storyboard.instantiateViewControllerWithIdentifier("VIEWID")


//Is this the right way?
UIApplication.sharedApplication().delegate.window?.rootViewController?.presentViewController(MY_VIEW, animated: true, completion: nil)


//Or this?
UIApplication.sharedApplication().keyWindow?.rootViewController?.presentViewController(MY_VIEW, animated: true, completion: nil)

换句话说,为什么要使用 UIApplication.sharedApplication().delegate.window? 而不是 UIApplication.sharedApplication().keyWindow?.rootViewController? 以及在什么情况下?使用一种或另一种的优缺点是什么?

最佳答案

您可以按照以下步骤进行。

 let rootController = storyboard.instantiateViewControllerWithIdentifier("VIEWID") as! SplashVC

if self.window != nil {
self.window!.rootViewController = rootController
}

这样做的好处是当 window 为 nil 时不会崩溃。

另一种方式是(我认为最安全的方式)

   let navigationController:UINavigationController = storyboard.instantiateInitialViewController() as! UINavigationController
let rootViewController:UIViewController = storyboard.instantiateViewControllerWithIdentifier("VIEWID") as! LoginVC
navigationController.viewControllers = [rootViewController]
self.window?.rootViewController = navigationController

关于ios - 将 viewController 设置为根 viewController 的正确方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38472444/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com