IBDesignable UIView 子类总是无法在 Interface Builder 中呈现
IBDesignable UIView Subclass Always Fails to Render in Interface Builder
我看到很多关于此的问题,但答案很少( 解决了以前的类似问题,但不是这个)。
问题
我有an IBDesignable class。它派生自 UIControl,但如果我派生自 UIView,也会发生同样的事情。
基本上是这样的:
@IBDesignable
open class RVS_Checkbox: UIControl { ... }
它工作得很好(link 导致 this project,这是一个“插入式”UIControl class)。
但它不会在 Interface Builder 中呈现。我收到此错误:
这是错误,逐字记录:
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-only class。我以前遇到过类似的问题, 帮我解决了。我将代码包装在#if...#else...#endif 中,如下所示:
#if os(iOS)
@IBDesignable
open class RVS_Checkbox: UIControl { ... }
#else
@IBDesignable
class RVS_Checkbox: UIView { }
#endif
我什至给了它一个空的“占位符”,以备不时之需。
没有骰子。无论我做什么,IB 错误仍然发生,并且元素不呈现。
就像我说的,它仍然可以正常工作,并且还显示了适当的可检查属性:
但它不会呈现。
这是错误,在它抱怨的目录旁边:
我确定我做错了什么,但不知道是什么。我尝试删除 DerivedData、清理项目、尝试所有 4 个目标等。
没有骰子。
有什么想法吗?
好的。我想到了。这是 Xcode 中的错误。我提交了一份报告。
如果我在内部驱动器上打开项目,控件呈现,没问题。
如果我在外部驱动器上打开项目,它无法呈现。
很奇怪,但我能够使用一个非常简单的项目 100% 地重现它。
我怀疑大多数开发人员只是简单地获得带有大内部磁盘的 Mac,并在这些上进行开发。我必须得到一个内部驱动器有限的,所以我使用其中一个 SanDisk 尖叫器作为我开发的外部设备。
我想知道我可能会遇到哪些其他问题?我发现 Xcode 有很多问题。
更新:我附上错误报告中使用的两个屏幕截图。
这演示了设置。我在系统的两个不同位置使用完全相同的项目。左边的是内置 MacBook Pro 驱动器,右边的是同一个项目,但在外部驱动器上。
This link downloads the project, in a zip file.
我看到很多关于此的问题,但答案很少(
问题
我有an IBDesignable class。它派生自 UIControl,但如果我派生自 UIView,也会发生同样的事情。
基本上是这样的:
@IBDesignable
open class RVS_Checkbox: UIControl { ... }
它工作得很好(link 导致 this project,这是一个“插入式”UIControl class)。
但它不会在 Interface Builder 中呈现。我收到此错误:
这是错误,逐字记录:
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-only class。我以前遇到过类似的问题,
#if os(iOS)
@IBDesignable
open class RVS_Checkbox: UIControl { ... }
#else
@IBDesignable
class RVS_Checkbox: UIView { }
#endif
我什至给了它一个空的“占位符”,以备不时之需。
没有骰子。无论我做什么,IB 错误仍然发生,并且元素不呈现。
就像我说的,它仍然可以正常工作,并且还显示了适当的可检查属性:
但它不会呈现。
这是错误,在它抱怨的目录旁边:
我确定我做错了什么,但不知道是什么。我尝试删除 DerivedData、清理项目、尝试所有 4 个目标等。
没有骰子。
有什么想法吗?
好的。我想到了。这是 Xcode 中的错误。我提交了一份报告。
如果我在内部驱动器上打开项目,控件呈现,没问题。
如果我在外部驱动器上打开项目,它无法呈现。
很奇怪,但我能够使用一个非常简单的项目 100% 地重现它。
我怀疑大多数开发人员只是简单地获得带有大内部磁盘的 Mac,并在这些上进行开发。我必须得到一个内部驱动器有限的,所以我使用其中一个 SanDisk 尖叫器作为我开发的外部设备。
我想知道我可能会遇到哪些其他问题?我发现 Xcode 有很多问题。
更新:我附上错误报告中使用的两个屏幕截图。
这演示了设置。我在系统的两个不同位置使用完全相同的项目。左边的是内置 MacBook Pro 驱动器,右边的是同一个项目,但在外部驱动器上。
This link downloads the project, in a zip file.