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
完成!
的学分
我遇到了同样的问题。我使用 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 中的步骤帮助我解决了问题。简而言之:
- 退出 Xcode。
- 终止您机器上所有名为
Interface Builder Cocoa Touch Tool
的进程。
- 重新开始 Xcode。
我是 运行 Xcode 7.3,通过执行这些步骤,错误神奇地消失了,最后,我的项目仍处于执行之前的确切状态这些步骤(即对任何内容进行净零更改):
- 将 'use_frameworks!'(当然没有撇号)添加到您的
播客文件
- 打开一个终端window
- cd 到项目的根目录
- 运行 'pod install' 来自命令行
- 从您的播客文件中删除 'use_frameworks!'
- 运行 'pod install' 再一次
- 再次尝试构建,看看是否可以解决问题
错误;它对我有用
看起来像是我们以前都见过的那些偶尔出现的 Xcode 障碍之一,尤其是当您急于完成其他事情时。
我不使用 CocoaPods,但我确实使用了包含 IBDesignable 项目的内部框架,并且也遇到了这个问题。我从主项目中清理并删除了派生数据,然后重新启动 Xcode,但这似乎并没有解决问题。要解决它,我必须转到 Window > 项目,select 框架项目(不是使用框架的项目,而是框架项目本身),然后删除派生数据。所以,完整的步骤:
- 产品菜单 > 清洁
- 按住选项 > 产品菜单 > 清理构建文件夹... > 清理
- Window 菜单 > 项目 > 选择我的框架项目 > 删除派生数据
- Window 菜单 > 项目 > 选择我的主项目 > 删除派生数据
- 退出Xcode
- 重启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 然后像我一样继续前进:)
我创建了一些自定义控件,并将它们用于新项目。但是,我在界面生成器中不断收到错误消息:
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
完成!
的学分我遇到了同样的问题。我使用 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 中的步骤帮助我解决了问题。简而言之:
- 退出 Xcode。
- 终止您机器上所有名为
Interface Builder Cocoa Touch Tool
的进程。 - 重新开始 Xcode。
我是 运行 Xcode 7.3,通过执行这些步骤,错误神奇地消失了,最后,我的项目仍处于执行之前的确切状态这些步骤(即对任何内容进行净零更改):
- 将 'use_frameworks!'(当然没有撇号)添加到您的 播客文件
- 打开一个终端window
- cd 到项目的根目录
- 运行 'pod install' 来自命令行
- 从您的播客文件中删除 'use_frameworks!'
- 运行 'pod install' 再一次
- 再次尝试构建,看看是否可以解决问题 错误;它对我有用
看起来像是我们以前都见过的那些偶尔出现的 Xcode 障碍之一,尤其是当您急于完成其他事情时。
我不使用 CocoaPods,但我确实使用了包含 IBDesignable 项目的内部框架,并且也遇到了这个问题。我从主项目中清理并删除了派生数据,然后重新启动 Xcode,但这似乎并没有解决问题。要解决它,我必须转到 Window > 项目,select 框架项目(不是使用框架的项目,而是框架项目本身),然后删除派生数据。所以,完整的步骤:
- 产品菜单 > 清洁
- 按住选项 > 产品菜单 > 清理构建文件夹... > 清理
- Window 菜单 > 项目 > 选择我的框架项目 > 删除派生数据
- Window 菜单 > 项目 > 选择我的主项目 > 删除派生数据
- 退出Xcode
- 重启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 然后像我一样继续前进:)