0

我有一个 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.'

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

4

3 回答 3

2

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

如果 nibName 属性返回非 nil 值,则视图控制器具有关联的 nib 文件,如果视图控制器是从情节提要中实例化的,如果您使用 initWithNibName:bundle: 方法显式为其分配了一个 nib 文件,或者如果 iOS在应用程序包中找到一个 nib 文件,其名称基于视图控制器的类名。

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

于 2013-04-09T21:45:02.357 回答
1

真正的问题是 Viewcontroller 有一个默认的视图,并且不知何故 IB 到类 view->view 的连接丢失了,因此出现了错误

于 2013-03-06T20:35:44.570 回答
0

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

于 2013-03-06T20:29:00.840 回答