IB Designables:更新自动布局状态失败:无法从路径(null)加载可设计性。

81

我在XIB中看到了这个错误。但是其他所有东西都已编译,而且此错误似乎没有造成任何损害。这是我需要担心的问题吗?这里的问题是什么,我应该如何修复它?

输入图像描述

更新: 我已将cocoapods更新为最新版本(0.36.3),虽然这解决了一些编译问题,但错误已经返回,并且我现在看到了另一个错误:

输入图像描述


https://stackoverflow.com/questions/50644306/ibdesignable-error-failed-to-update-auto-layout-status/52790289#52790289这将会对你有所帮助。 - Hardik1344
13个回答

80

在 CocoaPods 中已知的问题。 这个问题已经在版本 0.36.1 中解决。 只需更新 CocoaPods,然后在 pod 文件中添加特定的代码行: 在platform :ios,'7.0'之后加入use_frameworks!

所以你的文件将看起来像这样:

platform :ios, '7.0'

use_frameworks!

/// here will be dependencies etc. ///

更新:

完整的步骤列表,以便一劳永逸地解决问题:

  • 关闭项目;
  • 打开终端应用程序;
  • 将CocoaPods本身更新到0.36.1或更高版本;
  • 在终端中导航到您的项目文件夹;
  • 键入:pod update
  • 在xCode中打开您的项目;
  • 清理项目;
  • 重新构建项目。

2
实际上,只需更新cocoapods即可解决我的问题。我很惊讶cocoapods在一个不相关的XIB中给我报错了,但是这就是现实。 - Oren
1
我收回之前的话。错误又出现了。我按照你建议的进行了额外的更改,但错误仍然存在,并且我现在还收到有关iOS8的多个O-link警告。 - Oren
2
尝试了多次,没有运气。 - Oren
1
你说得对。我在我的XIB中引用了TTTAttributedLabel。一旦我将其删除,错误就消失了。如果我重新添加它,错误就会再次出现。我现在不确定该怎么办,但至少我知道原因了。感谢您的帮助! - Oren
1
我刚刚添加了"use_frameworks!",现在FSCalender一切都正常工作了。谢谢! - Zulqarnain Mustafa
显示剩余10条评论

33

经过一些研究和挖掘,我可以确认,没有解决这个问题的方法。

这是Xcode的一个bug。

现在我们只能等待更新了。

暂时只需重新启动 Xcode。


8
没错,对我来说这与可可豆荚无关,我的自定义IB设计元件一直出现这种情况。已经尝试了所有方法... - benjamin.ludwig
2
这是哪个版本的Xcode?我正在使用7.1.0,我还有它。 - CalZone
2
我正在使用Xcode 8.0,这个问题仍未得到解决。 - Statik
4
界面构建器非常缓慢且存在许多错误,几乎不能用于组件设计。是的,在Xcode 8.0中仍然如此。我认为我更享受iOS开发而不是Android开发的最重要原因之一是IDE工具更好。苹果在他们的Xcode工具中做得非常糟糕,越来越糟糕了! - Bagusflyer
3
我使用的是Xcode 8.2版本,1.5年后情况仍然如此。难以置信。 - Can Poyrazoğlu
显示剩余6条评论

17

这对我有用:

  1. 删除派生数据(首选项>位置)
  2. 重启Xcode
  3. 清理项目(产品>清理)

运行成功!看起来清空DerivedData缓存是正确的方法,甚至不需要清理项目。 - Apophenia Overload
是的,这对我也起作用了。 - user1366265
4
问题肯定会再次出现。这是 Xcode 的一个 bug。 - Bagusflyer

13

2016是这个年份,xCode 7.3.1版本出现了以下错误。(使用cocoa pods 1.0也无关紧要)

原因:在IB中使用了一个特殊的UILabel子类。有印象吗?

优雅的解决方案:

1: 子类化TTTAttributedLabel或FXLabel或者其他你有的标签,在IB中使用它。

2: 在子类的.h文件中添加以下行:

#ifndef IB_DESIGNABLE
#define IB_DESIGNABLE
#endif

@class LabelFromPod;


IB_DESIGNABLE @interface YourLabel : LabelFromPod {
 ...
}

3:那么我认为您需要清除项目,在退出xCode并重新构建(通常是xCode恐慌协议),问题就会消失。

更新2017 xCode 8.2.1:情况变得更糟 :( 空白VC问题:IB甚至不会加载具有这些IB_DESIGNABLE的视图控制器的UI元素。我一无所知 :)


1
错误仍会随机出现。退出 Xcode 将解决问题。 - keithyip
赞 @Jaro 发现了确切的问题。虽然我已经添加了 ifndef 语句,但问题仍然存在。清除、退出、重建会有所帮助,但这仍然是 Xcode 中的一个 bug。苹果应该修复它。 - Ashish P

9
我曾经遇到过使用 TTTAttributedLabel 的同样问题,我按照 Andrey 的答案来尝试进行修复。编译成功后,其他的 pod 模块(例如:TSMessage、SVProgressHUD)的 bundle 文件似乎无法加载。在 Cocoapods 博客文章中也提到了这一点,但我不想将捆绑资源移动到 mainBundle 中(而且我还没有验证这是否有效)。
因此,我选择从 Podfile 中删除 TTTAttributedLabel,并直接包含源代码以摆脱这个错误。这对我有用,希望也能成为解决这个问题的另一个答案。

只有对我有帮助的答案。 - bisma
1
我也在使用TTTAttributedLabel。为了解决问题,我将类暂时更改回UILabel以适应TTTAttributedLabels,进行了自动布局的更改,然后再将类更改回去。虽然很烦人,但它确实起作用了。 - Ben Kane

7

可能有点晚,但是当我遇到这个问题时,加入以下初始化代码可以解决它。

required override init(frame: CGRect) {
    super.init(frame: frame)
}

required init?(coder aDecoder: NSCoder) {
    super.init(coder: aDecoder)
}

这样做就可以了!天哪,我都快疯了,一直没办法解决那个错误! - livingtech

3
Podfile的末尾添加此脚本,并再次执行pod install
post_install do |installer|
    installer.pods_project.build_configurations.each do |config|
        config.build_settings.delete('CODE_SIGNING_ALLOWED')
        config.build_settings.delete('CODE_SIGNING_REQUIRED')
    end
end

3

我曾经遇到过同样的问题,因为我在storyboard上使用了自定义视图。

以下操作可以解决此问题:

  • 添加以下代码(将POD转换为动态框架)到pod文件中:use_frameworks!
  • 执行pod update
  • 重启Xcode

1
在Mac上更新CocoaPods,使用以下命令部分地解决了我的问题:
sudo gem install cocoapods

1
问题可能是您使用了框架或自定义UILabel类,例如MarqueLabel或TTTAttributed Label。 在pod文件中取消注释#use_frameworks。 运行pod update。 清理并重新构建您的项目。 这将解决您的问题。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接