AppDelegate didFinishLaunchingWithOptions launchOptions - 以NSException类型的未捕获异常终止Swift 3.0

时间:2017-01-18 05:06:32

标签: ios swift3 appdelegate

我正在尝试使用Swift 3.0创建登录/受保护的页面会话页面

因此,我在AppDelegate.swift中创建了 didFinishLaunchingWithOptions launchOptions 函数,如下所示

AppDelegate.swift

import UIKit

@UIApplicationMain
class AppDelegate: UIResponder, UIApplicationDelegate {

    var window: UIWindow?

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


        let rootViewController = self.window!.rootViewController
        let mainStoryBoard: UIStoryboard = UIStoryboard(name: "Main", bundle: nil)

        let isUserLoggedIn:Bool = UserDefaults.standard.bool(forKey: "isUserLoggedIn")
        if(!isUserLoggedIn){

            let loginViewController = mainStoryBoard.instantiateViewController(withIdentifier: "loginview") as! LoginVC

            window!.rootViewController = loginViewController
            window!.makeKeyAndVisible()

        }
        else{
            let protectedPage = mainStoryBoard.instantiateViewController(withIdentifier: "ViewController") as! ViewController

            window!.rootViewController = protectedPage
            window!.makeKeyAndVisible()
        }

        return true
    }
}

它构建成功,但我在应用程序运行时出错。错误如下

  

由于未捕获的异常而终止应用   'NSInvalidArgumentException',原因:'Storyboard()不包含带标识符的视图控制器   'loginview''

     

libc ++ abi.dylib:以未捕获的类型异常终止   NSException(lldb)

2 个答案:

答案 0 :(得分:3)

在Storyboard中选择LoginVC并在Inspector窗口中,在Storyboard ID中提供loginview标识符

答案 1 :(得分:1)

最有可能的是,您没有设置LoginVC的Storyboard ID。在故事板中选择LoginVC并将故事板ID设置为" loginview"。查看图片以供参考

enter image description here