如何以编程方式在 AppDelegate 中设置 Initial viewController?

How to set the Initial viewController in AppDelegate Programatically?

我知道这个问题被问过几次,但我尝试了所有的解决方案,但没有一个对我有用。

我目前正在处理一个 iOS 项目并遇到了问题。

我正在构建一个在首次启动时需要一些个人信息的应用程序。因此,我使用 NavigationController,我将其设置为 Storyboard 中的 Initial View Controller

现在我想在我的 AppDelegate 中检查用户是否已经输入了个人数据。在这种情况下,我创建了一个 User Defaults KV Pair called "onboarding" of type Bool

如果值为 true,我想将 Initial View Controller 更改为主 TabBarController,应用程序的其余部分使用。

我希望这张图片可以说明我上面的意思:

希望你能想办法解决这个问题

非常感谢您的提前帮助。祝你有美好的一天!

1) 打开你的 AppDelegate.swift 并添加 属性

var window: UIWindow?

2) 在

func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool

a) 初始化此 window:

window = UIWindow(frame: UIScreen.main.bounds)

b) 将您需要的 UIViewController 设置为 windowrootViewController 属性:

window?.rootViewController = myViewController

c) 使这个 window 键可见:

window?.makeKeyAndVisible()

就是这样。 并且不要忘记从目标设置中删除故事板: Remove storyboard from target

希望对您有所帮助。