我在控制台得到以下错误:

应用程序在启动结束时应该有一个根视图控制器

下面是我的应用程序:didFinishLaunchWithOptions方法:

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

    // Set Background Color/Pattern
    self.window.backgroundColor = [UIColor blackColor];
    self.tabBarController.tabBar.backgroundColor = [UIColor clearColor];
    //self.window.backgroundColor = [UIColor colorWithPatternImage:[UIImage imageNamed:@"testbg.png"]];

    // Set StatusBar Color
    [[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleBlackTranslucent];

    // Add the tab bar controller's current view as a subview of the window
    self.window.rootViewController = self.tabBarController;
    [self.window makeKeyAndVisible];
    return YES;
}

在Interface Builder中,UITabBarController的委托被连接到App委托。

有人知道怎么解决这个问题吗?


当前回答

在AppDelegate中替换

 [window addSubview:[someController view]];

to

  [self.window setRootViewController:someController];

其他回答

在“sho”答案的顶部,这是正确的(UIApplicationMain的第四个参数应该是主控制器的名称),我添加了一些注释。

我最近改变了我的一个应用程序的“模型”使用主窗口。Xib以编程方式构造窗口。该应用程序使用了一个较旧的模板,自动创建了主窗口。因为我想为iPhone 5支持不同的控制器视图XIB,所以在创建App Delegate时,通过编程方式选择正确的XIB更容易。我删除了主窗口。Xib项目以及。

问题是,我忘记在UIApplication main中填充第四个参数,我忘记在项目摘要中从“主界面”中删除主窗口。

这导致了一个大问题:它在开发设备上呈现了无害的警告“应用程序预计会……”,但当它进入App Store时,它在消费者手机上崩溃了,因为MainWindow不再在捆绑包中!我不得不请求对漏洞修复进行快速审查。

另一个症状是,当设置被更改,应用程序被放在前台时,有时会出现一个白色块,比如一个空白的UIView。在iPhone 5中,很明显它是320x480块。也许丢失的主窗口是在开发模式下创建的,使用旧的大小。当第一个崩溃报告到达收件箱时,我刚刚发现了这个错误。

从app Store安装而不是从XCode安装,结果显示应用确实崩溃了,主窗口问题也在日志中暴露出来,所以我可以看出这不是设备+IOS版本的特殊组合。

尝试将选项卡栏控制器的IBOutlet连接到接口生成器中的根视图,而不是

self.window.rootViewController = self.tabBarController;

但实际上我还没见过这样的错误。

我能够在xcode的摘要屏幕上设置初始视图控制器。

点击左边文件资源管理器中最上面的项目名称(它应该有一个小的蓝图图标)。在中间一栏中,点击“TARGETS”下面的项目名称(它旁边应该有一个小铅笔“a”图标)。在“iPhone / iPod部署信息”下寻找“主界面”。您应该能够从下拉菜单中选择一个选项。

虽然很多答案看起来都是正确的,但没有一个能帮我解决问题。我正在尝试使用空的应用程序模板,并试图为了理解而直接加载到.xib文件(就像旧的窗口模板)。苹果似乎在运行NSLog消息。

我使用的是Xcode 4.3,似乎没有任何东西可以消除这条消息,我想知道为什么。最后,我决定在Xcode 4.5(预览版/iPhone 6.0版本)中看看会发生什么,这条消息不再存在。在移动。

确保你的“Is Initial View Controller”为你的第一个场景正确设置。

这就是导致错误的原因。