_loadViewFromNibNamed被调用,即使没有与UIViewController关联的nib

时间:2013-02-27 20:28:07

标签: iphone ios xcode crash

我有一个UIViewController子类,我正在实例化并试图像这样继续使用navigationController:

MenuVC *menuVC = [[MenuVC alloc] init];
[self.navigationController pushViewController:menuVC animated:YES];

我没有与此类相关联的nib文件,因此只需执行简单的..alloc] init]而不是initWithNib:bundle:

我仍然在pushViewController电话上遇到崩溃,跟踪说明了这个

reason: '-[UIViewController _loadViewFromNibNamed:bundle:] loaded the "MenuVC" nib but the view outlet was not set.'

我不明白为什么会发生这种情况。我有其他视图控制器,使用相同的方法加载精细。

3 个答案:

答案 0 :(得分:2)

我想我在Apple的文档中找到了答案:

  

如果nibName属性返回非零值,则视图控制器具有关联的nib文件,如果视图控制器是从故事板实例化的,则会发生这种情况,如果您使用initWithNibName:bundle:方法显式地为其指定了nib文件,或者,如果iOS在应用程序包中找到一个nib文件,其名称基于视图控制器的类名。

因此,这意味着操作系统实际上会尝试加载nib,如果找到的话。我确实在我的捆绑中有一个与VC同名的nib但没有关联它的File Owner

答案 1 :(得分:1)

真正的问题是Viewcontroller有一个默认的视图,并且某种程度上IB与class view->视图的连接缺失,因此错误

答案 2 :(得分:0)

这可能不是“答案”,但已经解决了。我刚刚删除了整个文件并添加了一个具有不同名称的新文件,并且它有效。