首页 > 解决方案 > Swift 5. 目标:使应用程序在不使用 segues 的情况下打开特定的 View Controller

问题描述

此代码位于 AppDelegate 中。Xcode 不会抛出任何错误,但是当我在其他视图控制器按钮中调用 func 时,此代码不起作用。(在 View Controller VC1 或 VC2 上打开应用程序)调用代码:(UIApplication.shared.delegate as!AppDelegate).configureInitialViewController()

class AppDelegate: UIResponder, UIApplicationDelegate {
    var window: UIWindow?

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

        configureInitialViewController()
        return true
    }

    **// determins which VC will be initially launched.**
    func configureInitialViewController() {
        var initialVC: UIViewController
        let storyboard = UIStoryboard(name: "Main", bundle: nil)
        if 1 > 0 {
            initialVC = storyboard.instantiateViewController(withIdentifier: VC1)
        } else {
            initialVC = storyboard.instantiateViewController(identifier: VC2)
        }
        window?.rootViewController = initialVC
        window?.makeKeyAndVisible()

    }

标签: xcodeswift5swift5.1

解决方案


用了你的建议马特。( SceneDelegate.swift 文件)这是代码:

var window: UIWindow?

func scene(_ scene: UIScene, willConnectTo session: UISceneSession, options connectionOptions: UIScene.ConnectionOptions) {
        guard let windowScene = (scene as? UIWindowScene) else { return }
        window = UIWindow(frame: windowScene.coordinateSpace.bounds)
        window?.windowScene = windowScene
        if 1 > 0 {
            window?.rootViewController = UIStoryboard(name: "Main", bundle: nil).instantiateViewController(withIdentifier: "INPUT YOUR STORYBOARD ID HERE")
        } else {
            window?.rootViewController = UIStoryboard(name: "Main", bundle: nil).instantiateViewController(withIdentifier: "INPUT YOUR STORYBOARD ID HERE")
        }
        window?.makeKeyAndVisible()


}

推荐阅读