Xcode & Swift - 无法从 AppDelegate 实例化另一个视图控制器

Xcode & Swift - unable to instantiate another view controller from AppDelegate

第一次使用此应用程序时,您会看到 3 个欢迎页面。在最后一个之后,我在 UserDefaults 中将 bool 保存为 true,以便在用户下次启动应用程序时跳过这些欢迎页面。

为此,我在 AppDelegate.swift 中执行以下操作:

func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {
        // Override point for customization after application launch.

        if UserDefaultsVault.shared.getDidFinishIntro() == true {

            self.window = UIWindow(frame: UIScreen.main.bounds)
            let storyboard : UIStoryboard = UIStoryboard(name: "Main", bundle: nil)

            let mainVC = storyboard.instantiateViewController(withIdentifier: "mainPage") as UIViewController

            self.window?.rootViewController = mainVC
            self.window?.makeKeyAndVisible()

        } 

        return true
    }

我当然在故事板中将故事板 ID 添加到我的视图控制器中,并且我还检查了断点是否满足条件(这是真的)。

尽管如此,主控制器不会实例化。

我用这段代码制作了另一个应用程序,它一直有效!

我是不是搞错了什么?

对于iOS 13+你需要在SceneDelegate中给出instantiateViewController(withIdentifier:),像这样:

class SceneDelegate: UIResponder, UIWindowSceneDelegate {

    var window: UIWindow?

    func scene(_ scene: UIScene, willConnectTo session: UISceneSession, options connectionOptions: UIScene.ConnectionOptions) {
        guard let windowScene = scene as? UIWindowScene else { return }
        window = UIWindow(windowScene: windowScene)
        window?.makeKeyAndVisible()

        if UserDefaultsVault.shared.getDidFinishIntro() {
            let storyboard = UIStoryboard(name: "Main", bundle: nil)
            window?.rootViewController = storyboard.instantiateViewController(withIdentifier: "mainPage")
        }
    }
}

注意:您的代码适用于使用以下 iOS 13 的设备。