ios - IBDesignable UIView 子类总是无法在 Interface Builder 中呈现

标签 ios swift interface-builder ibdesignable

我看到很多关于此的问题,但答案很少(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

关于ios - IBDesignable UIView 子类总是无法在 Interface Builder 中呈现,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66736704/

相关文章:

具有自定义用户帐户管理的 iOS 非消耗性 IAP - 多次购买

swift - 函数调用需要参数,但函数不带参数

iphone - 使标签捕捉到另一个标签的右边缘

ios - 如何在 iOS 6 上播放视频音频?

iphone - 从我的 iPhone 应用程序中使用的 iTunes 库中删除/隐藏文件

iphone - 对我的 iOS 应用程序资源使用 zip 压缩?

ios - 使用 performSegue 显示导航 Controller

swift - 使 BlockOperation 失败,以便其他依赖项不执行

swift - 将 xib 文件加载到自定义 NSView 中会嵌入到另一个自定义 NSView 中

cocoa - 如何将项目添加到 Interface Builder 的 "User Media"窗口中的 "Library"类别?