无法设置初始ViewController

时间:2020-05-19 11:51:30

标签: ios swift xcode

存储访问令牌后,我想导航到主页,但是它不起作用。它总是在启动时将我定向到LoginViewController。

当前我正在使用以下代码:

AppDelegate.swift

var window: UIWindow?

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

        let accessToken: String? = KeychainWrapper.standard.string(forKey: "accessToken")
        if accessToken != nil
        {
            let mainStoryboard:UIStoryboard = UIStoryboard(name: "Main", bundle: nil)
            let homePage = mainStoryboard.instantiateViewController(withIdentifier: "HomeViewController") as! HomeViewController
            self.window?.rootViewController = homePage                
        }

        return true
    }

项目的用户界面:故事板

迅速:5

Xcode:11.4

目标部署:13.4

4 个答案:

答案 0 :(得分:1)

尝试一下

在我的应用中:它正在运行

let storyboard = UIStoryboard(name: "Main", bundle: nil)
var nvc: UINavigationController? = nil

nvc  = storyboard.instantiateViewController(withIdentifier: "NavRootVC") as? UINavigationController

let objCntrl : HomeVC = storyboard.instantiateViewController(withIdentifier: "HomeVC") as! HomeVC
nvc?.viewControllers = [objCntrl]
window?.rootViewController = nvc

答案 1 :(得分:0)

原因是因为您尚未初始化window属性。 您只需要添加这两行

self.window = UIWindow(frame: UIScreen.main.bounds)
window?.makeKeyAndVisible()

let homePage = mainStoryboard ...之后的

答案 2 :(得分:0)

这可能有帮助:

String

答案 3 :(得分:0)

如果您的部署目标> 13 那么您应该选择SceneDelegate。您可以在SceneDelegate中访问window属性。

在此方法中设置您的rootViewController

func scene(_ scene: UIScene, willConnectTo session: UISceneSession, options connectionOptions: UIScene.ConnectionOptions) {

        guard let window  = (scene as? UIWindowScene) else { return }

}

此密钥应添加到您的plist中 enter image description here