微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

IBDesignable UIView 子类总是无法在界面生成器中呈现

如何解决IBDesignable UIView 子类总是无法在界面生成器中呈现

我看到很多关于此的问题,但答案很少(one answer 解决了之前的一个类似问题,但没有解决这个问题)。

问题

我有an IBDesignable class。它派生自 UIControl,但如果我派生自 UIView,也会发生同样的事情。

它基本上是这样的:

@IBDesignable
open class RVS_CheckBox: UIControl { ... }

它工作得很好(链接指向 this project,这是一个“插入式”UIControl 类)。

但它不会在 Interface Builder 中呈现。我收到此错误

The error I get

这里是逐字逐句的错误

The built product "/Volumes/Development/Developer/Xcode/DerivedData/RVS_CheckBox-ficjiiqrddckmjenmsrbrxvihaky/Build/Intermediates.noindex/IBDesignables/Products/Debug-appletvsimulator/RVS_CheckBox" does not exist in the file system. Make sure your built products contains either an application or a framework product.

首先,这是一个 tvOS 错误,这是一个仅限 iOS 的类。我以前遇到过类似的问题,this answer 为我解决了这个问题。我将代码包裹在 #if...#else...#endif 中,如下所示:

#if os(iOS)
    @IBDesignable
    open class RVS_CheckBox: UIControl { ... }
#else
    @IBDesignable
    class RVS_CheckBox: UIView { }
#endif

我什至给了它一个空的“占位符”,以备不时之需。

没有骰子。无论我做什么,IB 错误仍然发生,并且元素不会呈现。

就像我说的,它仍然可以正常工作,并且还显示了适当的可检查属性

Inspectables

但它不会呈现。

这是错误,在它抱怨的目录旁边:

Error and Finder Window

我确定我做错了什么,但不知道是什么。我尝试删除 DerivedData、清理项目、尝试所有 4 个目标等。

没有骰子。

有什么想法吗?

解决方法

好的。我想到了。这是Xcode中的一个错误。我提交了一份报告。

如果我打开内部驱动器上的项目,控件会呈现,没问题。

如果我在外部驱动器上打开项目,则无法渲染。

很奇怪,但我能够 100% 的时间重现它,使用一个非常简单的项目。

我怀疑大多数开发人员只是获得带有大型内部磁盘的 Mac,然后在这些磁盘上进行开发。我不得不使用一个有限的内部驱动器,所以我使用其中一个 SanDisk 尖叫器作为我的开发的外部。

我想知道我可能会遇到哪些其他问题?我发现 Xcode 有很多问题。

更新:我附上了错误报告中使用的两个屏幕截图。

这演示了设置。我在系统上的两个不同位置使用完全相同的项目。左边的一个在内置 MacBook Pro 驱动器上,右边的一个是相同的项目,但在外置驱动器上。

This link downloads the project,in a zip file.

The directory setup

The failure

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。