【问题标题】:How to set the Initial viewController in AppDelegate Programatically?如何以编程方式在 AppDelegate 中设置初始 viewController?
【发布时间】:2020-07-03 05:53:53
【问题描述】:

我知道这个问题被问了几次,但我尝试了所有的解决方案,但没有一个真正适合我。

我目前正在开发一个 iOS 项目,但遇到了问题。

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

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

如果Value是true,我想把Initial View Controller改成主TabBarController,App的其余部分使用。

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

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

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

【问题讨论】:

  • 这个问题被问了不止“几次”。它已被问及回答了 数百次 次。没有现有的答案是您可以直接复制和粘贴并使用的东西,因为您的需求可能略有不同。但所有这些都是原则,您可以从中学习并应用以实现您的目标。 — 只是添加到组合中,这是我的(可下载的)示例:github.com/mattneub/RegistrationExample/blob/master/…
  • 您在应用中使用的是 swiftui 还是 scenedelegate?

标签: ios swift xcode autolayout storyboard


【解决方案1】:

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

var window: UIWindow?

2) 在

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

a) 初始化这个窗口:

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

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

window?.rootViewController = myViewController

c) 使这个窗口键可见:

window?.makeKeyAndVisible()

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

希望有帮助。

【讨论】:

  • 这是否也适用于 UITabBar 和 UINavigationController 而不是 UIViewController?
  • @Chri2000R UITabBarController 和 UINavigationController UIViewControllers。你知道类和子类吗?
  • 是的,当然。但是 UITabBarController,而不是 UITabBar :)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-07-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多