【问题标题】:Unknown Class **** in Interface Builder fileInterface Builder 文件中的未知类 ****
【发布时间】:2021-03-31 14:59:49
【问题描述】:

我使用MyView的根类添加了一个UIView xib文件。

我在错误的位置创建了它,因此将它移到了项目中。同一个项目只是不同的文件夹/组。

然后我在运行时遇到问题...

Unknown Class MyView in Interface Builder file

我不知道出了什么问题,所以我现在已经从项目和目录中删除了文件。

我已经使用 SublimeText2 搜索了字符串“MyView”,但它在项目中的任何地方都不存在。

我已经重置了模拟器,清理了项目和构建文件夹并删除了派生数据。

仍然遇到同样的错误。

任何想法我现在可以做什么?

【问题讨论】:

  • 你检查过编译源中的 .m 文件吗?
  • 确保您已将标题导入到正确的位置。尝试在其他地方添加导入,看看它是否有效。文件所有者应该是这个地方。
  • 没有要导入的文件。我删除了它。如何查看编译源?
  • 目标->构建阶段->编译源
  • 我在那里查过,但没有提到。刚刚重启了我的电脑。还是什么都没有。

标签: ios objective-c xcode appcode


【解决方案1】:

IBuilder 有时会错过customModule="AppName" customModuleProvider="target"

要修复它,请将情节提要作为源代码打开并替换此行:

<viewController storyboardIdentifier="StoryboardId" id="SomeID" customClass="CustomClass"
sceneMemberID="viewController">

到这里:

<viewController storyboardIdentifier="StoryboardId" id="SomeID" customClass="CustomClass"
 customModule="AppName" customModuleProvider="target" sceneMemberID="viewController">

【讨论】:

  • 所有其他修复对我都不起作用,但确实如此。 customModuleProvider 对我来说不见了。哇,这很烦人。这让我更接近于以编程方式构建所有界面。
  • 谢谢你,这也为我修好了!!!!经过数小时尝试其他事情.... smh
  • 这不完全是我的问题。对我来说,从你引用的地方往下几行,有一个无关的“customClass”标签............::: .........to........:
【解决方案2】:

就我而言,我通过在 Identity Inspector 中选中“从目标继承模块”选项来解决。

【讨论】:

  • 为我工作,谢谢
  • 为我工作:)
【解决方案3】:

转到查看 -> 实用程序 转到 .m 文件的文件检查器

打开 Target Membership 部分并确保为此 .m 文件选择了您的目标

【讨论】:

    【解决方案4】:

    如果您的 Xcode 项目中有多个目标,请确保为您正在测试的目标编译错误文件中提到的类。

    【讨论】:

    • 是的,没错,我已经尝试过无数种解决方案,但这是唯一真正有效的解决方案。我没有在课堂上“勾选”构建目标。谢谢你,先生!
    【解决方案5】:

    appcode 非常顽固地将旧的 xib 缓存在某个地方,如果您有缓存的 xib 并且它与您的控制器具有相同的名称,它将尝试在启动时加载它。

    删除 .xib 后我要做什么:

    1. 从设备中删除应用程序
    2. 清理应用代码中的构建文件夹
    3. 使缓存无效并重新启动,在应用代码启动之前将其杀死
    4. 在 xcode 中删除派生数据
    5. 启动应用代码

    第 4 步应该是不必要的,但我的感觉是没有它我仍然会看到已删除的 .xib

    【讨论】:

      【解决方案6】:

      这发生在我重命名自定义视图类时,模块(在选择视图时的身份检查器中)为空白。它保持空白,因为 Xcode 没有自动完成自定义类名,因此它使模块空白。我所要做的就是在构建后重新输入类名,然后它会自动完成,并选择适当的模块(当前 - 目标)

      【讨论】:

        【解决方案7】:

        好的,所以我删除了对导致问题的类的所有引用,但仍然没有。

        不过,我还有一个 UIViewController 子类,名为 MyViewController。这没有被加载到任何 IB 文件中,所以我不知道它是如何导致问题的。

        我把名字改成了MyOtherViewController

        构建 - 运行 - 工作。

        我不知道如何或为什么,但它现在有效。

        【讨论】:

          【解决方案8】:

          当我在一个文件中有多个类声明时,我遇到了同样的问题。 我所做的是我在我的一个视图控制器中声明了一个 UITableViewCell 子类,并忘记将 UITableViewCell 子类的 @implementation 放在视图控制器的 .m 文件中。

          【讨论】:

            【解决方案9】:

            根据我的经验,上述所有解决方案都没有奏效。 然后我不得不在所有偏离的 Xib 中重新输入自定义类。 作为一个惊人的结果,它成功了,我所做的重新连接了@interface 和 IB 之间丢失的连接。 希望有用。

            【讨论】:

              【解决方案10】:

              我在使用 SPM 数据包中的自定义类时遇到了这个问题。将自定义类模块设置为 SPM 数据包名称解决了我的问题。

              【讨论】:

                猜你喜欢
                • 2012-11-23
                • 2018-03-06
                • 2016-02-15
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                相关资源
                最近更新 更多