这与此处众多其他类似问题的情况不同 .
**** *** Terminating app due to uncaught exception 'NSInternalInconsistencyException', reason: '-[UIViewController _loadViewFromNibNamed:bundle:] loaded the GameView nib but the view outlet was not set.'**
您可能会想“按照它说的那样,将文件所有者连接到IB中的视图!” . 但问题是,我甚至在项目中甚至在项目目录中都没有GameView.xib .
我的项目中有一个“GameViewController.m”和匹配的“GameViewController.xib” . 使用GameViewController会出现这个错误,但我不明白尝试加载“GameView.xib”的想法 . 它不应该使用“GameViewController.xib”吗?
如果我grep我的项目目录,我确实看到它引自“UserInterfaceState.xcuserstate” .
<string>file://localhost/Users/bemmu/Dropbox/b2/iphone/ValleyStory/ValleyStory/GameView.xib</string>
这个提到的文件不存在 . 我之前可能有一个带有该名称的文件,并重命名/删除它,但它没有被我在IB中看到的任何地方引用 .
我设法混淆了xcode吗?
12 回答
检查您正在使用的任何nib文件(如MainWindow.xib) . 如果要从笔尖加载GameViewController,请检查它正在加载的文件(在检查器的信息选项卡下) . 确保它设置为“GameViewController”而不是“GameView” .
我的解决方案有点不同 .
单击界面构建器中的xib
选择左侧的文件所有者
打开文件's Owner'的连接检查器
如果视图属性不是't yet wired, control-drag it to the view icon (under the file'的所有者和第一响应者图标) .
我也有这个问题,但必须以不同的方式解决它 . 基本上,我有一个视图控制器名称MainViewController,它有一个名为MainViewController.xib的xib . 这个笔尖的视图属性设置为文件所有者,它是MainViewController .
我还创建了一个MainView.xib,其中包含一个视图,该视图将以编程方式添加到MainViewController.xib中定义的视图及其视图中 . 它基本上封装了一个内部视图,该视图将位于MainViewController.xib的视图中,并且还将其文件所有者设置为MainViewController .
所以基本上,我希望MainViewController.xib作为MainViewController对象的nib加载,而在MainViewController中,稍后,我会添加MainView.xib指定的内部视图 .
出现了几个问题:
1.)我在Apple文档中发现通过storyboard或nib加载视图控制器时:
因此,如果您还有一个名为MainViewController的nib并且希望MainViewController.xib成为MainViewController的主要nib,则不能有一个名为MainView.xib的nib .
2.)即使您删除MainView.xib或将其重命名为其他内容(本例中为MainInternalView.xib),您必须删除/清除iOS模拟器,因为旧的nib文件(MainView.xib)仍将保留在应用程序中 . 重建/重新运行应用程序时,它不会覆盖整个应用程序包 .
如果您不想重置内容设置(可能需要保留一些数据),请右键单击iOS模拟器文件夹中的应用程序,显示包内容,找到MainView.nib,然后将其删除 . 重建时Xcode不会自动为您执行此操作,因此我们需要手动删除旧笔尖 .
总的来说,不要将名称命名为MainViewController和MainView的nib,即具有相同前缀的nib . 将MainView.xib调用为其他内容,例如MainInternalView.xib .
我最近解决了这个问题 . 确保在按照此处给出的步骤(以防万一)之前备份项目 . 这些步骤解决了我的问题
退出Xcode
导航到位于
.xcodeproj/project.xcworkspace/xcuserdata/<username>.xcuserdata
的UserInterfaceState.xcuserstate
并删除该文件 .重新打开Xcode . Xcode将创建一个新的
UserInterfaceState.xcuserstate
,它将是干净的 .在我的情况下,我根本没有使用xib . 我需要从Build Phases> Compile Sources中删除.m文件并将其添加回来 .
鉴于你之前引用它,听起来像xcode还没有得知它不再存在 . 从产品菜单中选择“清洁”,然后选择“构建”,希望这将超过旧的参考您 .
面对同样的问题,不得不在代码中更改视图的名称:
至
我有多个视图,偶然(我不知道这是怎么发生的)但我的后台视图没有文件所有者,因此对于将来遇到此问题的其他人,请确保所有视图都有文件所有者 .
我得到了相同的错误,然后检查接口构建器中的类名,看到我在自定义类属性中键入了视图控制器类名 .
当传递nil到_1339240时,UIViewController搜索与控制器同名的nib . 检查传递给初始化程序的文件名是否正确且存在!
例如:(例如
[[CCVisitorsController alloc] initWithNibName:nil bundle:nil]
然后UIViewController尝试加载名称为CCVisitorsController
的nib作为默认值 .如果该文件不存在,则抛出您提到的错误 .
我有这个问题,因为我做的事情很糟糕
NIB加载 .
在我的情况下,这个错误是由愚蠢的错误产生的 - 我删除_view view