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

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

下面是我的应用程序: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委托。

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


当前回答

ARC更改:

改变

@synthesize window;

而不是

@synthesize window=_window;

其他回答

日志中也有同样的错误信息。我在应用中有一个UIAlertView弹出:didFinishLaunchingWithOptions。我通过延迟对alertView的调用来解决这个问题,让根视图控制器有时间完成加载。

在应用程序:didFinishLaunchingWithOptions:

[self performSelector:@selector(callPopUp) withObject:nil afterDelay:1.0];

1秒后调用:

- (void)callPopUp
{
    // call UIAlertView
}

当我尝试改变加载的第一个视图控制器时,我有同样的错误

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

一开始我不知道错误到底从哪里来,所以我缩小了范围,找出了问题所在。结果是我试图在视图显示在屏幕上之前改变视图的显示。因此,解决方案是在视图控制器中移动这段代码,这给我带来了麻烦

- (void) viewDidLoad

to

- (void) viewDidAppear: (BOOL)动画

错误不再出现。我的问题是由制作一个UIAlertView显示引起的。

在你的情况下,我建议你检查在tabBarController的活动视图控制器的代码(因为它可能是一个问题在那个视图控制器)。 如果这不起作用,试着在nib文件中而不是在代码中设置起始设置——或者如果你想在代码中做,试着将代码移动到tabBarController的活动视图控制器的适当方法。

好运!

我在Xcode 4中将一个旧的EAGLView示例项目迁移到新的GLKView示例项目中,没有一个解决方案适合我。最后我意识到我试图设置主GLKViewController的自我。视图指向Interface Builder中的嵌套GLKView。

当我指向自我时。视图回到根GLKView在接口生成器,我的应用程序能够启动没有一个错误消息(所以确保你的视图控制器的视图被设置为根视图)。

附注:如果你想让一个嵌套的GLKView工作,创建一个新的成员变量,如self。并将其连接拖到Interface Builder中嵌套的GLKView。然后确保拖动self。glkSubview的委托给文件的所有者。您必须手动调用[self。glkView:(glkView *)视图drawwinrect:(CGRect)rect"如果你有setNeedsDisplay关闭的glkView。

我也有这个错误,但不像之前列出的任何答案,我的是因为我在我新生成的控制器(xcode 4.2, ios5)中取消了“loadView”方法的注释。

 //Implement loadView to create a view hierarchy programmatically, without using a nib.
- (void)loadView  
{
}

它甚至告诉我,该方法是为创建视图编程,但我错过了它,因为它看起来如此类似于其他方法,如viewDidLoad,我通常使用我没有抓住它。

要解决这个问题,只需删除该方法,如果你不是通过编程方式创建视图层次结构,也就是使用nib或storyboard。

验证你的STORYBOARD文件…如果你使用IB '电线'代码到你的UI..然后刚好删除了UI元素…然后意识到,哦,你需要删除代码中的引用(在我的情况下,一个名为AbortButton的UIButton)…然后过了一会儿,应用程序就不会启动了……

问题在“故事板”文件中。在xml编辑器中打开它,寻找孤立的“关系”,这些连接器指向不应该指向的地方……

eg:

<relationships> <关系种类=“出口” 名称=“中止按钮” 候选类=“UIButton”/>

在我的代码中已经不存在了…(然而我仍然有一个“连接器”链接在故事板文件)..

此外,我有(莫名其妙和无效的连接器从一个UIImageView或工具栏到我的主UIViewController。视图对象)…我想它也不喜欢……

底线-一个人不需要手动“编码控制器”的存在…STORYBOARD文件被破坏了。我修好了我的,宾果又完美地工作了。

顺便说一句,作为一个文本编码员。我越来越喜欢IB…踢屁股在MS Visual Studio的IDE…