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

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

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

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


当前回答

这发生在我身上。通过编辑.plist文件解决。 指定Main nib文件基名。(应该是MainWindow.xib)。 希望这能有所帮助。

其他回答

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

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

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

我也有同样的问题。检查你的主机。最后一个参数应该设置为实现UIApplicationDelegate协议的类的名称。

retVal = UIApplicationMain(argc, argv, nil, @"AppDelegate");

没有一个答案能完全解决我的问题。

我正在开发一个升级到ARC的旧iOS4项目,现在正在为iOS 7开发Xcode 5

我通读了所有这些文件,并开始检查我的配置和代码。

为我修复它的是添加

-(BOOL) application:(UIApplication*) application didFinishLaunchingWithOptions: (NSDictionary*) launchOptions
{
    // Maybe do something
    return YES;
}

除了有

- (void)applicationDidFinishLaunching:(UIApplication *)application
{
}

我没有

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

在得到错误之前。

确保在应用程序委托中有这个函数。

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:    (NSDictionary *)launchOptions {
   return YES;
}

确保didFinishLaunchingWithOptions返回YES。如果你碰巧删除了'return YES'行,这将导致错误。这个错误在故事板用户中可能特别常见。

我在一款面向iOS 5.1的iPad应用中遇到了这种情况。应用程序使用UITabBarController。我需要在标签栏控制器中创建一个新部分,所以我创建了一个新的视图控制器和xib。一旦我将新的视图控制器添加到选项卡栏控制器,我的屏幕上的控件都不再工作了,我得到了“期望有一个根视图控制器”日志。

新的xib中的顶级对象是UIWindow而不是UIView。当我将一个UIView放到XIB中,有了视图出口点,将所有子视图移动到新的UIView中,并删除了UIWindow实例,问题就解决了。