Ios IBDesignable UIView子类始终无法在Interface Builder中呈现

Ios IBDesignable UIView子类始终无法在Interface Builder中呈现,ios,swift,interface-builder,ibdesignable,Ios,Swift,Interface Builder,Ibdesignable,关于这一点,我看到了很多问题,但很少有答案(解决了之前类似的问题,但不是这一个) 问题 我有。它源自UIControl,但如果我源自UIView,也会发生同样的事情 基本上是这样的: @IBDesignable open class RVS_Checkbox: UIControl { ... } 它工作得很好(链接指向,这是一个“插入”UIControl类) 但它不会在界面生成器中呈现。我得到这个错误: 下面是错误,逐字记录: The built product "/Volumes

关于这一点,我看到了很多问题,但很少有答案(解决了之前类似的问题,但不是这一个)

问题

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

基本上是这样的:

@IBDesignable
open class RVS_Checkbox: UIControl { ... }
它工作得很好(链接指向,这是一个“插入”UIControl类)

但它不会在界面生成器中呈现。我得到这个错误:

下面是错误,逐字记录:

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的类。我以前也遇到过类似的问题,并为我解决了这个问题。我将代码包装在#if…#else…#endif中,如下所示:

#if os(iOS)
    @IBDesignable
    open class RVS_Checkbox: UIControl { ... }
#else
    @IBDesignable
    class RVS_Checkbox: UIView { }
#endif
我甚至给了它一个空的“占位符”,以防需要拿着它

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

正如我所说,它仍然可以正常工作,并显示适当的可检查属性:

但它不会渲染

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

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

没有骰子


有什么想法吗?

好的。我想出来了。这是Xcode中的一个bug。我提交了一份报告

如果我在内部驱动器上打开项目,控件将呈现,没有问题

如果在外部驱动器上打开项目,它将无法渲染

非常奇怪,但我能够100%的复制它,使用一个非常简单的项目

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

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

更新:我附上了bug报告中使用的两个屏幕抓图

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


现在看来,这可能是Xcode 12的一个问题,直到今年晚些时候我最终获得了一台M1X/M2 Mac,这个问题才得以解决。我看到的大多数关于这个问题的讨论都是这样的(我还没有看到任何真正的解决方案)。没那么严重。嗯……在这件事上,不倒翁夫妇很坚强。我发送了一个DTS请求(我从来没有使用过,为什么不呢?)。这看起来越来越像是Xcode的问题,苹果也不急于解决它。这似乎与IB文件的复杂性有关。我不能让它发生在简单的项目中,但一旦它开始变得复杂,我就会得到错误。可能不值得我尝试进一步调查。感谢您的跟进。不幸的是,我的问题没有得到解决。我面临着完全相同的问题,除了我的问题一直在本地/内部磁盘上。我的类被包装在
#if os(iOS)
检查中,但仍然在IB中得到tvOS错误。我认为这整个过程是一个bug农场。不幸的是,我不认为苹果对解决这个问题特别感兴趣。他们都在使用SwiftUI(它还没有为一些更雄心勃勃的项目做好准备)。这对SPM仍然不起作用,在您的示例项目中,您有两个目标-direct和SPM,但是当您删除“direct”源代码时,“SPM”没有呈现可设计项并不奇怪。我听说SPM不能很好地处理可指定项。