13

嗨,我似乎在开发故事板应用程序时偶然发现了奇怪的事情。

我的应用程序在启动屏幕后立即停止,在控制台中我收到错误消息:

Missing proxy for identifier UIStoryboardPlaceholder

现在,如果我尝试让应用程序继续运行,我会在控制台中收到新消息,我认为这与第一条错误消息有问题有关

*** Terminating app due to uncaught exception 'NSUnknownKeyException', reason:
 '[<IntroViewController 0x6e35f40> setValue:forUndefinedKey:]: 
this class is not key value coding-compliant for the key sceneViewController.

奇怪的是,我只有在使用 iOs 5.1 Simulator 时才会收到此错误。它在 iOs 6 模拟器以及同时具有 iOs 6 和 iOs 5.1 的设备上运行良好

我试图找到答案,但谷歌说它找不到 UIStoryboardPlaceholder 这个词的任何结果,更不用说整个错误消息了。我确定,我的 xcode 项目中的任何地方都没有“UIStoryboardPlaceholder”这个词(甚至在 nib 文件中也没有),也没有提到“sceneViewController”。知道可能出了什么问题吗?

编辑:我试图重置模拟器和清理项目,但无济于事

4

5 回答 5

27

我们遇到了同样的问题:故事板文件中的视图控制器,其接口在单独的 XIB 文件中定义。(使用 Xcode 6.3.1、iOS 8.3 和 Swift 1.2。)

我们使用的是 Swift,所以我们在类声明中添加了 @objc() 声明:

@objc(TestViewController) class TestViewController: UIViewController

我们可以使用另一个视图控制器很好地实例化视图控制器,self.storyboard?.instantiateViewControllerWithIdentifier( "TestViewController" )但是当呈现视图控制器(使用self.presentViewController( viewController, animated: true, completion: nil ))时,应用程序因相同的“缺少代理”和“键值编码不符合关键场景视图控制器”错误而崩溃。

我们在经过多次尝试和错误的调试后发现的解决方案是简单地确保故事板文件中视图控制器的故事板 ID类名不同

当我们将 Storyboard ID 从“TestViewController”重命名为“testViewController”(唯一的区别是小写首字母)时,一切正常……</p>

奇怪的?你打赌,但现在一切似乎都在工作。

于 2015-05-19T11:52:06.237 回答
6

我有同样的问题。尝试清理项目并恢复模拟器。

于 2012-11-13T20:09:37.083 回答
3

我在从 .xib 文件转换为情节提要的应用程序中遇到了同样的错误。我的应用程序包含一个 UITabBarController,点击某些选项卡会触发错误。

就我而言,问题在于我已将视图控制器复制到情节提要中,该情节提要使用“NIB 名称”属性从外部 .xib 文件加载视图控制器的视图。故事板视图控制器不支持从 .xib 文件加载视图,因此我的故事板包含一个没有视图的视图控制器。

我打开外部 .xib 文件,复制视图,将其粘贴到故事板中相应的视图控制器中,并确保粘贴的视图是故事板场景中视图控制器的下级(缩进)。然后我将视图重新连接到视图控制器中的插座。

当我重新运行应用程序时,错误消失了。

于 2013-06-18T18:06:15.860 回答
1

把我加到列表中去。在类上“重构 - 重命名”后出现此错误。我正在重命名的类是一个自定义 ViewController,它有自己的 .xib。我使用 Storyboard 启动一个包含“容器视图”的 viewController,它在启动时嵌入了我的自定义 ViewController。

到目前为止,唯一的出路是不使用我重构的 .xib (从容器视图中断开它)。

我的半解决方案:
我已经从之前的工作快照中恢复了我的应用程序,并从头开始创建了一个新的自定义 ViewController 和 .xib,而不是重构。将它连接到情节提要,我再次收到错误消息。清理构建并从模拟器中删除应用程序并重新运行,然后它神奇地运行而没有错误。 出于这个原因,我相信 Xcode 中有一个带有 Refactor-Rename 的错误,它会在幕后破坏一些情节提要文件。 一旦我确认新的 .xib 没有错误地附加到情节提要,我将类代码复制/粘贴到新的自定义 viewController 类中,并按照您的预期完成将类对象重新连接到 .xib 的过程。运行它,一切仍然有效。

仅供参考 - 这是我在尝试从错误中恢复时采取的一些失败步骤(在放弃和恢复快照之前)。
1.清洁构建。
2、在iOS模拟器中删除App。
3. 删除自定义 ViewController .xib 中的所有视图。
4. 将自定义 ViewController 命名为其他名称。
5. 在 Storyboard 中,向 ViewController 添加一个空白视图,表示我的自定义 Viewcontroller 类。 这有效并允许我的应用程序运行,但是我的自定义类既不能加载它自己的视图来代替这个默认的空白视图,也不能在使默认的空白视图透明时看到它自己的视图。调试显示我的自定义类 .xib 视图在分配给 self.view 时为零。

我目前正在避免 Xcode 对具有 .xib 的文件进行重构重命名。

于 2012-11-25T02:19:00.063 回答
0

我有同样的错误,终于解决了。我的问题是我有:

[[storyboard instantiateViewControllerWithIdentifier:@"TripDetail"] methodThatDoesNotExist:@"param"]
于 2014-05-27T13:48:02.933 回答