Interface Builder文件中的未知类

时间:2013-04-09 19:19:59

标签: iphone xcode

为什么我在运行iPhone应用程序时仍会出现此错误?该文件是我一直在努力删除和替换的ViewController,但它不会死。据我所知,我的项目中没有任何对该文件的引用(字符串或其他)。

  • 我删除了相关文件(我正试图摆脱它。)
  • 我已经清理了项目并重建了。
  • 我的模拟器中有“重置内容和设置”。
  • 我做了一个grep(grep -i -r“TheClassName”*),除了我的UserInterfaceState.xcuserstate文件之外什么都没有。
  • 我使用XCode的“查找/替换”选项卡搜索了代码。
  • 我已经仔细检查了我的Build Phases,我很确定它不在那里(它是一个大项目)。

还有其他想法吗?我花了太多时间试图弄清楚这个简单的事情;我一定错过了什么。

谢谢!

6 个答案:

答案 0 :(得分:6)

检查您的笔尖或故事板,并确保您的课程都没有设置!

答案 1 :(得分:6)

我在最近两天的时间内在多台机器上尝试后,终于解决了问题!我不会被挫败!

我将问题跟踪到UINavigationController上的setViewControllers调用,该调用在应用程序初始化时调用。我总是被传递3个对象(导航控制器中有3个窗格)。即使我删除了第三个对象,如前所述,总会传入三个对象。前两个的类类型是正确的,但第三个只是一个UIViewController。奇怪的是,这个视图控制器有一个nibName,它对应于我之前删除的目标文件和Xib文件。当然,当在这个borked UIViewController上调用视图时,它会崩溃,因为相应的nib显然已被删除。请记住,使用grep在我的目录中找不到此对象或Xib的文本名称,因此我完全不知道在运行我的应用程序时它是如何形成的。

所以,我认为应用程序可能没有正确清理。我对此进行了双倍和三倍检查。我甚至验证了我的工作区设置是否正确(文件 - >项目设置 - >高级)。该应用确实每次都重新编译。

其次,我开始想到也许这个对象是通过其他方式设定的。向后工作,我添加了一些断点并发现在父UINavigationController上调用了initWithCoder - 这最终解决了调用对象上的setViewControllers并分配三个视图控制器(其中一个是有问题的)。我可以很容易地从调用堆栈中看到正在加载的Nib文件反序列化了令人反感的东西。

所以,我开始挖掘我的Xib文件。当然,对象名称不在文件中(正如预期的那样,因为grep没有找到任何内容)。我删除并重新创建了包含我的根UINavigationController的Xib部分。这最终改变了Xib文件中的Object ID和ref。 其次,我创建了一个新的Xib和UIViewController,其名称与我之前删除的名称相同,希望Xcode可能会很高兴,如果我创建然后重新删除它们。然后我编译,重新删除它们,再次由Xib文件更新,用grep重新验证,是的,确实,该名称不存在任何内容。

它有效。在这个问题上花了好几天之后,我很确定界面构建器中有一个错误,但是我想重新审视这个问题来提交错误报告吗?绝对不是......

答案 2 :(得分:2)

在我的情况下,我使用Custom class name of View而不是Custom class of ViewController来解决问题。我错误地将这样添加到视图中,如下所示。

enter image description here

它应该像这样的ViewController。

enter image description here

这是我的情况,因为你可能与另一个组件有关。

答案 3 :(得分:1)

当视图类在框架中时会发生这种情况。选择框架的模块。使用CocoaPod的示例:HSegmentControl。

Example in image is with Cocoapod HSegmentControl

答案 4 :(得分:0)

确保在添加或重命名或移动文件时(尤其是在文件夹中)时,请确保在添加文件时:

A。创建组,而不是通常不会读入的引用。

B。选中要向其添加源的“产品或目标”的框。

答案 5 :(得分:0)

另一种尝试:

我必须在“自定义类”的“模块”控制下切换“从目标继承”。