Interface Builder-未能从 path (null)加载可设计程序

我有一些自定义控件,我已经创建,我是他们在一个新的项目中使用。然而,我总是在 Interface Builder 上出错:

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)

我已经在另一个项目中测试了控件,它们似乎在 Interface Builder 中呈现正确,但我无法让它们在当前项目中工作。是什么导致了这个错误,以及如何修复它?

先谢谢你。

28803 次浏览

编辑

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

单击“组织者”并确保位于“项目”上,然后删除所有派生数据。 关闭 Xcode,然后重新打开项目,让 Xcode 重新索引您的文件,看看这样是否能解决问题

我不确定这是否能解决你的问题,因为我无法复制它。但我觉得你可以试试。

首先,正如其他人提到的,似乎可可豆也有同样的问题。我通过提交,作出了他们的更正,但没有结果相关的设置。

但是,我在这个 StackOverflow 问题中发现了一个不同的相关错误消息,它也与路径上 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,而且有一个 pods 使用可设计的。所以诀窍就是添加‘ use _ Framework!到 Podfile。执行“ pod update”重新打开 xcode 项目,错误消息不会显示出来。

这个问题在 Cocoapods 的最新版本中得到了修复

要安装,只需运行:

[sudo] gem install cocoapods --pre

为了修复错误: “未能从路径(null)加载可设计性”:

use_frameworks!


pod '****'






end

use_frameworks!添加到您的 Podfile

更多信息: 从 pod 依赖项使用 IB _ DESIGNABLE 实时呈现自定义组件

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

  1. 退出 Xcode。
  2. 关闭机器上所有名为 Interface Builder Cocoa Touch Tool的进程。
  3. 再次启动 Xcode。

我正在运行 Xcode 7.3,通过执行这些步骤,错误奇迹般地消失了,最终,我的项目还是保持在执行这些步骤之前的确切状态(即对任何东西的净零变化) :

  1. 添加“ use _ Framework!”(当然,不要使用撇号)到您的 Podfile
  2. 打开终端窗口
  3. Cd 到项目的根目录
  4. 从命令行运行‘ pod install’
  5. 从 podfile 中删除“ use _ Framework!”
  6. 再次运行‘ pod install’
  7. 再次尝试构建,看看是否修复了 这对我来说是个错误

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

我不使用 CocoaPods,但是我使用一个包含 IBDesignable 项目的内部框架,并且也遇到了这个问题。我清理、删除了主项目中的派生数据,并重新启动了 Xcode,但这似乎并没有解决问题。为了解决这个问题,我必须转到 Window > Projects,选择框架项目(不是使用框架的项目,而是框架项目本身) ,并删除派生数据。所以,一步一步来:

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

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

我已经解决了这个问题,通过更新的吊舱“更新”希望它会为您工作

问题在于,当 Interface Builder 呈现视图时,cocoapods 中的 IB _ DESIGNABLE 没有正确链接。

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

我的技巧是在故事板中使用的 子类每个 IB _ DESIGNABLE视图,它直接来自豆荚。解决了错误。

当 xcode 和我的项目处于打开状态时,我更新 pods 时出现了这个错误。

我关闭了 xcode。再次运行了 pod 更新。重新启动了 xcode。

错误没有再次出现。

我没有使用可可豆荚,但是在视图控制器扩展导入的类时出现了这个错误。我只是在将 StoryBoard 更改为 IphoneX 视图时才得到这个错误,它在 iPhone8视图上运行良好。

我将项目设置从“新建生成系统(预览)”更改为“标准生成系统”,然后清除项目,错误消失。

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

如果以前的解决方案不适合您,尝试添加到您的目标 pod inherit! :search_paths

样本

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

然后按照之前的建议做一个豆荚升级。

所有与 Pods相关的修复对我来说都不起作用,但是删除 Derived Data文件夹起作用了

如果为我清除 + 重新启动 XCode 所做的。如果问题源于创建 IBDesignable 视图然后删除可检查的或可设计的标记,我绝对会尝试这种方法

如果你已经厌倦了试图找出解决方案,或者是在周五下午,只要放松一下,删除派生数据文件夹,清理编译 Xcode,关闭你的 Mac,休息5分钟(如果你没有在截止日期前灭火: P)。打开您的 mac 启动 Xcode 尝试再次构建。

如果这个工作只是诅咒 Xcode 和继续像我一样:)