Interface Builder - 无法从路径加载可设计对象(空)

Interface Builder - Failed to load designables from path (null)

我创建了一些自定义控件,并将它们用于新项目。但是,我在界面生成器中不断收到错误消息:

Failed to update auto layout status: Failed to load designables from path (null)

Failed to render instance of <control>: Failed to load designables from path (null)

我已经测试了另一个项目中的控件,它们似乎在界面生成器中正确呈现,但我无法让它们在当前项目中工作。是什么原因导致此错误,我该如何解决?

提前致谢...

编辑**

打开 Xcode(但不要打开您的项目)并单击 Window(右数第二个)

单击管理器并确保您在项目中,然后删除所有派生数据。 关闭 Xcode 然后重新打开您的项目并让 Xcode 重新索引您的文件并查看是否可以解决问题

我不确定这是否能解决您的问题,因为我无法重现它。但我想你还是可以试试看。

首先,正如其他人所说,CocoaPods 似乎也有同样的问题。我检查了构成更正的提交,但没有与您的设置相关的结果。

然而,我在这个Whosebug question中发现了一个不同的相关错误信息,这也与IB在路径上找不到的东西有关。我想知道他们的解决方案是否可以帮助您:

解决方案是在目标的 Build settings Runpath Search Paths 字段中添加 $(CONFIGURATION_BUILD_DIR)

您可以使用一个非常方便的技巧来调试实时渲染。

1) 将此扩展添加到您的项目中:

    extension UIView {
    public func liveDebugLog(message: String) {
        #if !(TARGET_OS_IPHONE)
            let logPath = "/tmp/XcodeLiveRendering.log"
            if !NSFileManager.defaultManager().fileExistsAtPath(logPath) {
                NSFileManager.defaultManager().createFileAtPath(logPath, contents: NSData(), attributes: nil)
            }

            var fileHandle = NSFileHandle(forWritingAtPath: logPath)
            fileHandle.seekToEndOfFile()

            let date = NSDate()
            let bundle = NSBundle(forClass: self.dynamicType)
            let application: AnyObject = bundle.objectForInfoDictionaryKey("CFBundleName")
            let data = "\(date) \(application) \(message)\n".dataUsingEncoding(NSUTF8StringEncoding, allowLossyConversion: true)
            fileHandle.writeData(data)
        #endif
    }
  }

2) 加一个liveDebugLog(message:),想知道什么就放什么。 3) 打开Terminal.app和运行命令open /tmp/XcodeLiveRendering.log

完成!

Morten Bøgh

的学分

我遇到了同样的问题。我使用 cocoapods 并且有一个使用 designables 的 pod。所以诀窍是将 'use_frameworks!' 添加到 Podfile。执行 'pod update' 重新打开 xcode 项目,错误消息应该不会出现。

此问题已在最新版本的 Cocoapods 中修复

要安装,只需运行:

[sudo] gem install cocoapods --pre

为了修复错误:"failed to load designables from path (null)":

use_frameworks!

   pod '****'



end

use_frameworks! 添加到您的 Podfile

查找更多:Live Rendering a custom component using IB_DESIGNABLE from a pod dependency

我在具有自定义 IBDesignable 视图的非 CocoaPods 项目上遇到了同样的问题。显然,这是一个 Xcode 错误。 this answer 中的步骤帮助我解决了问题。简而言之:

  1. 退出 Xcode。
  2. 终止您机器上所有名为 Interface Builder Cocoa Touch Tool 的进程。
  3. 重新开始 Xcode。

我是 运行 Xcode 7.3,通过执行这些步骤,错误神奇地消失了,最后,我的项目仍处于执行之前的确切状态这些步骤(即对任何内容进行净零更改):

  1. 将 'use_frameworks!'(当然没有撇号)添加到您的 播客文件
  2. 打开一个终端window
  3. cd 到项目的根目录
  4. 运行 'pod install' 来自命令行
  5. 从您的播客文件中删除 'use_frameworks!'
  6. 运行 'pod install' 再一次
  7. 再次尝试构建,看看是否可以解决问题 错误;它对我有用

看起来像是我们以前都见过的那些偶尔出现的 Xcode 障碍之一,尤其是当您急于完成其他事情时。

我不使用 CocoaPods,但我确实使用了包含 IBDesignable 项目的内部框架,并且也遇到了这个问题。我从主项目中清理并删除了派生数据,然后重新启动 Xcode,但这似乎并没有解决问题。要解决它,我必须转到 Window > 项目,select 框架项目(不是使用框架的项目,而是框架项目本身),然后删除派生数据。所以,完整的步骤:

  1. 产品菜单 > 清洁
  2. 按住选项 > 产品菜单 > 清理构建文件夹... > 清理
  3. Window 菜单 > 项目 > 选择我的框架项目 > 删除派生数据
  4. Window 菜单 > 项目 > 选择我的主项目 > 删除派生数据
  5. 退出Xcode
  6. 重启Xcode

对具有 IBDesignables 并可能导致错误的所有框架项目重复步骤 3。

我已经通过更新 pod 解决了这个问题"pod update"希望它对你有用

问题是当 Interface Builder 呈现您的视图时,来自 cocoapods 的 IB_DESIGNABLE 没有正确链接。

use_frameworks! 技巧应该可以做到,但对我来说,迁移代码有点费力。

我的技巧是 子类化每个 IB_DESIGNABLE 视图,我在直接来自 pods 的情节提要中使用。解决了错误。

当我在 xcode 和我的项目打开时更新 pods 时出现此错误。

I shut the xcode down. ran the pod update again. restarted xcode.

错误没有再出现。

我没有使用 cocoa pods,但在扩展导入的 类 的视图控制器上出现此错误。我只是在将 StoryBoard 更改为 IphoneX 视图时收到此错误,它在 iPhone 8 视图上工作正常。

我将项目设置从新构建系统(预览版)更改为标准构建系统,然后清理项目,错误消失了。

不知道为什么,但这解决了我的问题。

如果以前的解决方案对您不起作用,请尝试添加到您的目标中pod inherit! :search_paths

样本

  target 'my-app-target' do
    use_frameworks!
    inherit! :search_paths
  end

然后按照之前的建议进行 pod 更新。

所有 Pods 相关修复对我都不起作用,但删除 Derived Data 文件夹有效。 Xcode11

清理 + 重启 XCode 对我有用。如果问题源于您创建了一个 IBDesignable 视图,然后删除了一个可检查或可设计的标签,我绝对会尝试这种方法

如果您已经厌倦了寻找解决方案,或者万一现在是星期五下午,请放松并删除派生数据文件夹,清理构建 Xcode,关闭您的 mac ,休息 5 分钟(如果你在截止日期之前没有救火 :P )。打开您的 mac 启动器 Xcode 再次尝试构建。

如果这行得通就诅咒 Xcode 然后像我一样继续前进:)