ios - AppDelegate 抛出 NSInternalInconsistencyException

标签 ios objective-c

我正在尝试从我的 AppDelegate 打开 Storyboard,但它抛出了异常:

2016-10-25 10:26:16.776 momnt[22865:1300106] *** Terminating app due to  
 uncaught exception 'NSInternalInconsistencyException', 
 reason: 'Application windows are expected to have a root view 
 controller at the end of application launch'

这是我正在尝试做的:

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {

    UIStoryboard *loginStoryboard = [UIStoryboard storyboardWithName:@"Login" bundle:nil];
    UIViewController *mainViewController = [loginStoryboard instantiateInitialViewController];

    self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
    self.window.rootViewController = mainViewController;
    [self.window makeKeyAndVisible];

    return YES;
}

我读到较新版本的 XCode 要求所有 Windows 都必须有一个 rootViewController,但我已经做到了。

最佳答案

调试应用程序并检查 mainViewController 是否不是 nil

问题似乎是您没有在 Storyboard中将任何 viewController 设置为初始 viewcontroller。

将您想要的任何 View Controller 设置为初始 View Controller ,您的代码可以正常工作。

或者

使用instantiateViewControllerWithIdentifier并将您想要作为初始viewController的viewController标识符传递给它。

UIStoryboard *storybord = [UIStoryboard storyboardWithName:@"Login" bundle:nil];

UIViewController *mainViewController = [storybord instantiateViewControllerWithIdentifier:@"InitialViewControllerID"];

self.window.rootViewController = mainViewController;
[self.window makeKeyAndVisible];

关于ios - AppDelegate 抛出 NSInternalInconsistencyException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40240122/

相关文章:

iphone - 如何在不进行任何解析的情况下从服务器检索数据?

c# - 难以绑定(bind)不带参数的 iOS 委托(delegate)方法

ios - Typhoon:从程序集中检索 Storyboard时出现异常

ios - 错误: "_OBJC_CLASS_$_NgnEngine"

objective-c - 什么是现代运行时?

iOS向UITableView插入一行

ios - 根据用户角色重用 UIViewController 子类的 Storyboard UI

ios - 动画 UICollectionView contentOffset 不显示不可见的单元格

ios - FFMPEG iOS 7 库

iphone - 在 Objective C 中如何从字符串中获取对象?