首页 > 解决方案 > 我无法转换 initialViewController

问题描述

我想在应用程序启动后实例化一个 ViewController 。所以我实例化了控制器,但我得到了一个奇怪的错误

无法将“erkeb.HomeVC”(0x100bd8738)类型的值转换为“erkeb.ContainerVC”(0x100bd8990)

有人可以告诉我如何解决这个问题吗?

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

    fileprivate var containerVC = ContainerVC()

    var MenuContainerVC: ContainerVC{
        return containerVC
    }

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

        containerVC = ContainerVC()

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

        let sb = UIStoryboard(name: "Main", bundle: nil)
        var intialViewController = sb.instantiateViewController(withIdentifier: "WelkomVC")

        let userDefaults = UserDefaults.standard

        if userDefaults.bool(forKey: "WelkomIntroIsOk"){
            intialViewController = sb.instantiateInitialViewController() as! ContainerVC
        }

        window?.rootViewController = intialViewController
        window?.makeKeyAndVisible()

        //normaal juist onder lijn 28 maar menu schuift niet open
//        window?.rootViewController = containerVC
//        window?.makeKeyAndVisible()

        return true
    }

标签: iosswift

解决方案


您不需要强制转换sb.instantiateInitialViewController()ContainerVC. 如果UserDefaults值为 true,ContainerVC则以编程方式创建实例并在intialViewController. ContainerVC将被分配为根视图控制器。

if userDefaults.bool(forKey: "WelkomIntroIsOk") {
    intialViewController = ContainerVC()
}

推荐阅读