使用自定义类时,IB Designables会发出奇怪的警告

时间:2015-06-22 19:41:00

标签: ios swift interface-builder

我正在尝试使用自定义swift类在我的Storyboard上继承我的UIButton,该类应该将按钮显示为自定义汉堡按钮。

我收到此警告,并没有看到在界面生成器中呈现汉堡按钮,尽管它会间歇性地工作。

Custom类名为NTHamburgerButton,我不知道为什么字符上的字符串出现在类名之前。

  

IB Designables:将类UIButton用于具有自定义类的对象   因为_TtC6CProjectName17NTHamburgerButton类不存在。

5 个答案:

答案 0 :(得分:8)

我遇到了同样的问题,我从其他问题中找到了答案: enter link description here

我只是刷新所有视图 enter image description here

对我有用。希望它也能帮到你。

答案 1 :(得分:6)

这个问题似乎再次受到关注,所以我会给出更新。

这个问题存在于Obj-C和Swift混合项目中。因此,有问题的类是Swift类。

在Obj-C中提供Swift类时,可以使用以下语法

@objc(NTHamburgerButton) public class NTHamburgerButton : UIButton {}

否则,在Xcode创建的{Project-Name} -Swift.h文件中,您将看到它生成这些唯一的类名,就像问题一样。

这里唯一真正的问题是NTHamburgerButton.swift文件没有包含在我正在查看的产品中,但是如果我切换目标,它工作正常。因此间歇性的问题。

答案 2 :(得分:5)

对我而言,Codermonk和specialvict的解决方案都是必要的,但还不够。

我还必须在Interface Builder中打开从目标继承

enter image description here

这对我有用。

答案 3 :(得分:0)

即使应用了其他给出的解决方案,我也仍然在Xcode 11中遇到这个错误。

就我而言,我在主模块中拥有自己的@IBDesignable类(因此,不是来自CocoaPod或其他外部模块)。但是即使为我的视图类指定了objc(ClassName),Interface Builder在构建时仍使用自动生成的类名。

最后,我在IB中删除了模块名称和模块继承,并删除了错误并获得了视图预览渲染:

所以,对我来说,完整的解决方案是:

  1. 为Swift类声明一个Objective-C类名称
  2. 如上所示在Interface Builder中配置类

从Xcode 11开始,这似乎都是Swift所必需的。值得注意的是,尽管删除了模块引用,但运行时视图没有问题。我也不确定该解决方案如何查找从其他模块导入的视图。

答案 4 :(得分:0)

我在Xcode 12.1中开始发生这种情况。到目前为止,在Interface Builder中取消选中然后重新选中“从目标继承模块”似乎已经解决了问题。