我正在尝试使用自定义swift类在我的Storyboard上继承我的UIButton,该类应该将按钮显示为自定义汉堡按钮。
我收到此警告,并没有看到在界面生成器中呈现汉堡按钮,尽管它会间歇性地工作。
Custom类名为NTHamburgerButton,我不知道为什么字符上的字符串出现在类名之前。
IB Designables:将类UIButton用于具有自定义类的对象 因为_TtC6CProjectName17NTHamburgerButton类不存在。
答案 0 :(得分:8)
答案 1 :(得分:6)
这个问题似乎再次受到关注,所以我会给出更新。
这个问题存在于Obj-C和Swift混合项目中。因此,有问题的类是Swift类。
在Obj-C中提供Swift类时,可以使用以下语法
@objc(NTHamburgerButton) public class NTHamburgerButton : UIButton {}
否则,在Xcode创建的{Project-Name} -Swift.h文件中,您将看到它生成这些唯一的类名,就像问题一样。
这里唯一真正的问题是NTHamburgerButton.swift文件没有包含在我正在查看的产品中,但是如果我切换目标,它工作正常。因此间歇性的问题。
答案 2 :(得分:5)
答案 3 :(得分:0)
即使应用了其他给出的解决方案,我也仍然在Xcode 11中遇到这个错误。
就我而言,我在主模块中拥有自己的@IBDesignable
类(因此,不是来自CocoaPod或其他外部模块)。但是即使为我的视图类指定了objc(ClassName)
,Interface Builder在构建时仍使用自动生成的类名。
最后,我在IB中删除了模块名称和模块继承,并删除了错误并获得了视图预览渲染:
所以,对我来说,完整的解决方案是:
从Xcode 11开始,这似乎都是Swift所必需的。值得注意的是,尽管删除了模块引用,但运行时视图没有问题。我也不确定该解决方案如何查找从其他模块导入的视图。
答案 4 :(得分:0)
我在Xcode 12.1中开始发生这种情况。到目前为止,在Interface Builder中取消选中然后重新选中“从目标继承模块”似乎已经解决了问题。