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

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

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

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


当前回答

我的第一个视图是MenuViewController,我添加:

MenuViewController *menuViewController = [[MenuViewController alloc]init];
self.window.rootViewController = menuViewController;

在App Delegate方法上:

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

这工作。

其他回答

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

self.window.rootViewController = self.tabBarController;

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

如果你使用MTStatusBarOverlay,你会得到这个错误。

MTStatusBarOverlay创建了一个额外的窗口([[UIApplication sharedApplication] windows),它没有根控制器。

这似乎没有引起问题。

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

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

eg:

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

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

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

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

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

这个Swift 2解决方案对我来说很有效:

在AppDelegate -> didFinishLaunchingWithOptions中插入下面的代码

self.window!.rootViewController = storyboard.instantiateViewControllerWithIdentifier("YourRootViewController") as? YourRootViewControllerClass

我收到了同样的错误信息,因为我调用了警报

- (void)applicationDidBecomeActive:(UIApplication *)application 

而不是

- (void)applicationWillEnterForeground:(UIApplication *)application