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

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

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

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


当前回答

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

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

eg:

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

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

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

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

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

其他回答

我也有这个问题。事实证明,当我从左边的对象列表中删除应用程序委托时,我删除了应用程序委托,窗口和TabBarController的连接:)

我从“空应用程序”模板开始,然后手动添加XIB时得到了这个。我通过设置Sunny建议的主Nib名称来解决这个问题。这个场景中缺少的步骤是删除

self.window = [[[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]] autorelease];

from

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

因为它会覆盖在Xib文件中创建的窗口实例。这是假设你已经创建了一个ViewController,并将它与XIB文件中的窗口和App Delegate连接起来。

我在使用自定义ServiceLocator使用CoreData时得到了这样的错误

let context: NSManagedObjectContext = try self.dependencies.resolve()

//solution
let context: NSManagedObjectContext? = try? self.dependencies.resolve()

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

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

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

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

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

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

我升级到iOS9,开始出现这个错误。我能够修复它,但添加以下代码到- (BOOL)应用程序:(UIApplication *)应用程序didFinishLaunchingWithOptions:(NSDictionary *)launchOptions

NSArray *windows = [[UIApplication sharedApplication] windows];
for(UIWindow *window in windows) {
    if(window.rootViewController == nil){
        UIViewController* vc = [[UIViewController alloc]initWithNibName:nil bundle:nil];
        window.rootViewController = vc;
    }
}