界面生成器 - 无法从路径加载设计对象(空)
Posted
技术标签:
【中文标题】界面生成器 - 无法从路径加载设计对象(空)【英文标题】:Interface Builder - Failed to load designables from path (null) 【发布时间】:2015-04-08 02:11:19 【问题描述】:我创建了一些自定义控件,并在新项目中使用它们。但是,我在界面生成器中不断收到错误:
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)
我已经在另一个项目中测试了控件,它们似乎在界面生成器中正确呈现,但我无法让它们在当前项目中工作。是什么导致了这个错误,我该如何解决?
提前谢谢...
【问题讨论】:
@N1ghtshade3 我遇到了同样的问题,我遇到的问题不是来自 CocoaPods 依赖项。 我也没有使用 CocoaPods,但是我看过 CocoaPods 相关的帖子。我认为 CocoaPods 已经找到了解决这个问题的方法,但不幸的是我在任何地方都找不到! 您是否使用 imageNamed(:) 加载任何图像 看看github.com/CocoaPods/CocoaPods/issues/2792和***.com/questions/28204108/… 另一种解决方案:***.com/a/38368740/2245240 【参考方案1】:我遇到了同样的问题。我使用 cocoapods,并且有一个使用 designables 的豆荚。所以诀窍是添加“use_frameworks!”到 Podfile。执行 'pod update' 重新打开 xcode 项目,错误消息不应该出现。
【讨论】:
这与 ios 7+ 无关,因为它破坏了许多像 Realm 这样的库。 我正在使用 iOS 8 和 iOS 9 进行测试,它适用于我。 这可以解决问题,但添加了“use_frameworks!”破坏了我下载的 pod 的一些导入语句。 !use_frameworks 将大大增加您的构建大小仅供参考 最近使用 Xcode 13.0 进行了测试,它也适用于我。它已删除 IBDesignables。【参考方案2】:编辑**
打开 Xcode(但不要打开你的项目)并点击 Window(右起第二个)
点击管理器并确保您在项目中,然后删除所有派生数据。 关闭 Xcode,然后重新打开你的项目,让 Xcode 重新索引你的文件,看看是否能解决问题
【讨论】:
我已经尝试了所有这些,但当我将 IB_Designable 和 IBInspectable 添加回类时仍然有同样的错误 不起作用。已经尝试了多种变体。这不是派生数据问题。【参考方案3】:我正在运行 Xcode 7.3,并通过执行这些步骤使错误神奇地消失,最终使我的项目处于执行这些步骤之前的确切状态(即对任何内容进行净零更改):
-
添加“use_frameworks!” (当然没有撇号)给你的
豆荚文件
打开一个终端窗口
cd 到项目的根目录
从命令行运行“pod install”
删除“use_frameworks!”从你的 podfile 中
再次运行“pod install”
再次尝试构建,看看是否能修复
错误;它对我有用
看起来像是我们以前都见过的偶尔出现的 Xcode 障碍之一,尤其是当您急于完成其他事情时。
【讨论】:
完美运行!感谢您提供的超级清晰、详细的说明(其他人提到了use_frameworks!
,但没有人提到之后将其删除,并将其留在我的其他 pod 中导致问题)。【参考方案4】:
如果以前的解决方案不适合您,请尝试添加到您的目标 pod inherit! :search_paths
样本
target 'my-app-target' do
use_frameworks!
inherit! :search_paths
end
然后按照之前的建议进行 pod 更新。
【讨论】:
【参考方案5】:我不确定这是否能解决您的问题,因为我无法重现它。但我想你还是可以试试看。
首先,正如其他人提到的,CocoaPods 似乎也有同样的问题。我浏览了弥补其更正的提交,但没有与您的设置相关的结果。
但是,我在这个*** question 中发现了一条不同的相关错误消息,这也与 IB 在路径上找不到的东西有关。我想知道他们的解决方案是否可以帮助您:
解决方案是在目标的Build settings
Runpath Search Paths
字段中添加$(CONFIGURATION_BUILD_DIR)
。
【讨论】:
对这个问题的所有答案都投反对票的人能否提供理由? 他们的评级可能会下降。非常感谢您的回答!即使在 2020 年也有帮助:) 打桩。这对我有用(Xcode 12),最高评价的use_frameworks!
答案将是我项目中的豆荚的痛苦世界【参考方案6】:
我在具有自定义 IBDesignable
视图的非 CocoaPods 项目上遇到了同样的问题。显然,这是一个 Xcode 错误。 this answer 中的步骤帮助我解决了问题。简而言之:
-
退出 Xcode。
杀死您机器上所有名为
Interface Builder Cocoa Touch Tool
的进程。
再次启动 Xcode。
【讨论】:
【参考方案7】:我不使用 CocoaPods,但我确实使用了包含 IBDesignable 项目的内部框架,并且也遇到了这个问题。我清理了,从我的主项目中删除了派生数据,然后重新启动了 Xcode,但这似乎并没有解决它。要解决它,我必须转到 Window > Projects,选择框架项目(不是使用框架的项目,而是框架项目本身),然后删除派生数据。所以,完整的步骤:
-
产品菜单 > 清洁
按住选项>产品菜单>清理构建文件夹...>清理
窗口菜单 > 项目 > 选择我的框架项目 > 删除派生数据
窗口菜单 > 项目 > 选择我的主项目 > 删除派生数据
退出 Xcode
重启 Xcode
对任何和所有具有 IBDesignables 并可能导致错误的框架项目重复第 3 步。
【讨论】:
【参考方案8】:这个问题在最新版本的 Cocoapods 中修复了
要安装,只需运行:
[sudo] gem install cocoapods --pre
为了修复错误:“无法从路径(null)加载可指定项”:
use_frameworks!
pod '****'
end
将use_frameworks!
添加到您的 Podfile
了解更多:Live Rendering a custom component using IB_DESIGNABLE from a pod dependency
【讨论】:
【参考方案9】:问题是当界面生成器呈现您的视图时,来自 cocoapods 的 IB_DESIGNABLE 没有正确链接。
use_frameworks!
技巧应该可以做到,但对我来说,迁移代码有点费力。
我的诀窍是子类化我在故事板中使用的每个 IB_DESIGNABLE 视图,这些视图直接来自 pod。解决了错误。
【讨论】:
【参考方案10】:您可以使用一个非常方便的技巧来调试实时渲染。
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 的积分
【讨论】:
【参考方案11】:我已经通过更新 pod “pod update”解决了这个问题,希望它对你有用
【讨论】:
【参考方案12】:如果您已经厌倦了试图找出解决方案,或者如果是星期五下午,只需放松并删除派生数据文件夹,清理构建 Xcode,关闭您的 mac,休息 5 分钟(如果您在你的最后期限之前不要灭火:P)。打开你的 mac 启动 Xcode 再次尝试构建。
如果这行得通,只需诅咒 Xcode 并像我一样继续前进 :)
【讨论】:
【参考方案13】:当我在 xcode 和我的项目打开时更新 pod 时出现此错误。
我关闭了 xcode。再次运行 pod 更新。重启xcode。
错误没有再次出现。
【讨论】:
【参考方案14】:我没有使用可可豆荚,但在扩展导入类的视图控制器上出现此错误。我只是在将 StoryBoard 更改为 IphoneX 视图时才收到此错误,它在 iPhone 8 视图上运行良好。
我将项目设置从 New Build System (Preview) 更改为 Standard Build system,然后清理项目,错误消失了。
不知道为什么,但这为我解决了问题。
【讨论】:
【参考方案15】:所有与Pods
相关的修复对我不起作用,但删除Derived Data
文件夹有效。 Xcode 11
【讨论】:
【参考方案16】:如果对我来说,清理 + 重新启动 XCode。如果问题源于您创建 IBDesignable 视图然后删除可检查或可设计标签,我绝对会尝试这种方法
【讨论】:
以上是关于界面生成器 - 无法从路径加载设计对象(空)的主要内容,如果未能解决你的问题,请参考以下文章
无法将 PHP 生成的 JSON 解析为 .NET 对象。总是空的
无法使用 BitmapFactory.decodeFile 加载 JPEG 图像。返回空
从 TypeScript 类型定义或 GraphQL 片段定义生成 JavaScript 空对象