我有一个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.'
我不明白为什么会发生这种情况。我有其他视图控制器,使用相同的方法加载精细。
答案 0 :(得分:2)
我想我在Apple的文档中找到了答案:
如果nibName属性返回非零值,则视图控制器具有关联的nib文件,如果视图控制器是从故事板实例化的,则会发生这种情况,如果您使用initWithNibName:bundle:方法显式地为其指定了nib文件,或者,如果iOS在应用程序包中找到一个nib文件,其名称基于视图控制器的类名。
因此,这意味着操作系统实际上会尝试加载nib,如果找到的话。我确实在我的捆绑中有一个与VC同名的nib但没有关联它的File Owner
。
答案 1 :(得分:1)
真正的问题是Viewcontroller有一个默认的视图,并且某种程度上IB与class view->视图的连接缺失,因此错误
答案 2 :(得分:0)
这可能不是“答案”,但已经解决了。我刚刚删除了整个文件并添加了一个具有不同名称的新文件,并且它有效。