旧的iOS应用程序在启动屏幕后崩溃

时间:2016-12-21 11:06:57

标签: ios objective-c terminate

我正在开发一个Objective-c iOS应用程序,该应用程序最初是在2011年创建的,其中一些更新和更改在2013年完成。现在我应该让它工作,因为它崩溃了一个错误:

  

由于未捕获的异常'NSInternalInconsistencyException'而终止应用程序,原因是:'应用程序窗口在应用程序启动结束时应该有一个根视图控制器'

在AppDelegate中我已经检查过:

[self.window setRootViewController:viewAfterLaunchScreen];

根据这个答案"Application windows are expected to have a root view controller at the end of application launch" error when running a project with Xcode 7, iOS 9

调试后我发现应用程序在viewWillAppear运行rootViewController后崩溃了。

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
    self.window = [[[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]] autorelease];
if ([[DAL GetPreferences:@"FIRST"] isEqualToString:@"1"])
{
    LoginViewController *lvc3 = [[LoginViewController alloc] initWithNibName:@"LoginViewController" bundle:nil];
    [self.window setRootViewController:lvc3];
    [lvc3 release];
}
else if(_window.rootViewController == nil){

    PagingViewController *lvc2 = [[PagingViewController alloc] initWithNibName:@"PagingViewController" bundle:nil];
    [self.window setRootViewController:lvc2];
    [lvc2 release];
}
[DAL SavePreference:@"FIRST" :@"1"];
[self.window makeKeyAndVisible];
return YES; }

1 个答案:

答案 0 :(得分:0)

多久了这个" old"项目?如果超过几年,你还有:

[window addSubview:viewController.view];

您应该将其替换为:

[window setRootViewController:viewController];