界面构建器中的未知类

时间:2016-08-09 09:10:50

标签: ios iphone xcode storyboard

我知道有很多关于这个问题的问题,但我已经尝试了大部分问题,试图找出它并没有成功。

问题: 起初我无法从助理编辑器中添加我的类,因为自定义类没有提取它。

  1. 我确保调用继承自uiviewcontroller
  2. 我确保将课程添加到目标
  3. 我尝试删除类文件并重新添加回来
  4. 最后我通过storyboard xml添加了这个类,它出现在自定义类
  5. 现在我正在尝试将我的按钮,视图等连接到它的插座。看起来它们是连接的,但是当运行应用程序并打开该视图控制器时,应用程序崩溃并且调试器打印: “Interface Builder文件中的未知类xxx。” 然后 “这个类不是关键值btnMenu的编码兼容。”

    我查了一下:

    1. 正确设置了连接检查器(那里的插座没有错误)
    2. 尝试删除派生数据
    3. 清理项目
    4. 重新安装应用
    5. 我甚至尝试重新启动我的Mac,当然没有成功。

      有人可以在这里瞎一些吗? 感谢。

13 个答案:

答案 0 :(得分:69)

我刚刚使用UIViewController子类(使用Xcode 9 beta 2& Swift 4)发生了这种情况,解决方案是勾选'继承自目标',我在IB中设置自定义类。

如果您的视图恰好位于被复制到其他目标的.bundle文件(例如框架/静态库)中,您将需要为每个xib / storyboard设置显式模块目标而不是让它继承自托管它的目标。

答案 1 :(得分:18)

对我来说,问题是该课程不属于目标会员资格。只需将类添加到目标,您就应该在界面构建器上看到它。这有助于我的情况。

enter image description here

答案 2 :(得分:2)

我在测试自定义UIView时遇到了这个问题,当时UIView在框架中。我创建了一个简单的应用程序,在情节提要的默认ViewController中创建了一个UIView,并将其类设置为MyCustomView。应用启动时,总​​是出现“界面生成器中的未知类”错误。我正在导入我的框架,然后检查了构建的产品中该框架的存在。

问题是我的测试应用程序代码从未真正使用过该框架。即使情节提要引用了它,但我猜它从未加载过。当我在测试应用程序代码中添加[MyCustomView load];时,一切正常。

答案 3 :(得分:2)

在View Controller部分的Custom类中选中了称为“从目标继承模块”的对勾标记后,它可以正常工作。可以跟随图像。

要找到此> 选择您的视图控制器黄色按钮>,然后单击“ 显示身份检查器”>然后选中称为“ 从目标继承模块”的刻度线

enter image description here

答案 4 :(得分:1)

好吧所以我不知道如何以及为什么,但是,我做了(再次)我以前尝试过的是:

  1. 删除课程
  2. 使用新名称创建相同的类
  3. 删除了场景并在故事板中重新创建
  4. 连接所有(以同样的方式!!!)
  5. 现在看来Xcode知道我的班级.... 我仍然不知道问题是什么,但我想这与链接器有关。

答案 5 :(得分:1)

@Anthony Scott提到的内容是正确的,直到您使Framework_A依赖于Framework_B并且类来自Framework_B :)然后您需要取消选中复选框并提供包含给定类的Module。谢谢你的问题顺便说一句。我正在使用Commons框架用于其他框架,它帮助我实现了这一点;) 对于那些开发自定义Cocoa Touch Frameworks的人来说,这可能会有所帮助。

答案 6 :(得分:1)

我遇到了这个错误,因为我在创建它时意外地将我的类文件保存到Base.lproj文件夹中。

我通过右键单击Project Navigator中的文件并删除对它的引用来修复错误。然后我将文件通过Finder移动到正确的文件夹。然后我右键单击Project Navigator中的主要组并单击Add Files to "GroupName"...并选择该类并单击Add按钮。

之后错误就消失了。

答案 7 :(得分:1)

对于那些遇到此问题但使用故事板中的系统类为PKCanvasViewARView的用户。

在将视图的Custom Class设置为任何这些系统类之后,请确保将Module设置为None。接下来转到Link Binary with Libraries中目标的Build Phases,并手动链接包含该类的框架。最后一步是清理并删除派生数据(这很关键,否则问题将不会消失)。

答案 8 :(得分:0)

如果您尝试将类分配给ViewController,请确保您创建的类继承了UIViewController。 xCode无法识别你的类的唯一原因是它是一个不同类型的实例,比方说,它可能是一个UITableViewController类型。

请先检查班级的继承情况。

答案 9 :(得分:0)

检查班级名称。确保它对应于您在属性检查器中为ViewController分配的类。

答案 10 :(得分:0)

您需要使用自定义类实例化视图控制器。没有它你可能会有错误。

self.storyboard!.instantiateViewController(withIdentifier: "namePage") as! EmailAndPassword

答案 11 :(得分:0)

没有一个帮助。我的问题是我创建了自定义情节提要并添加了自定义类。但是我忘了从自动生成的主情节提要中使用初始视图控制器箭头,并将初始情节提要更改为我的自定义情节提要,这对我来说是固定的。

答案 12 :(得分:0)

我发现我遇到的问题是我指向的UIViewController的“自定义类”参数没有附加ViewController.swift文件!

相关问题