IB Designables 在使用自定义 class 时发出奇怪的警告
IB Designables gives strange warning when using a custom class
我正在尝试使用自定义 swift class 子class 我的 Storyboard 上的 UIButton,它应该将按钮显示为自定义 Hamburger Button。
我收到此警告,但没有看到在 Interface Builder 中呈现的 Hamburger 按钮,尽管它会间歇性地工作。
自定义的class叫NTHamburgerButton,不知道为什么在class名字前面出现了字符上的字符串。
IB Designables: Using class UIButton for object with custom class
because the class _TtC6CProjectName17NTHamburgerButton does not exist.
我也遇到了同样的问题,我从另一个问题中找到了答案:
enter link description here
我只是刷新所有视图
对我有用。希望对你也有帮助。
这个问题好像又引起了一些关注,所以我会更新一下。
这个问题存在于 Obj-C 和 Swift 混合项目中。所以有问题的 Class 是 Swift Class.
使 Swift classes 在 Obj-C 中可用时,您可以使用以下语法
@objc(NTHamburgerButton) public class NTHamburgerButton : UIButton {}
否则在 Xcode 创建的 {Project-Name}-Swift.h 文件中,您会看到它生成了这些唯一的 class 名称,就像问题中的那样。
这里唯一真正的问题是 NTHamburgerButton.swift 文件没有包含在我当时查看的产品中,但如果我切换目标,它工作正常。因此间歇性问题。
对我来说,Codermonk 和 specialvict 的解决方案都是必要的,但还不够。
我还必须在 Interface Builder 中打开 Inherit From Target:
这对我有用。
我在 Xcode 11 中遇到了这个错误,即使在应用了其他给出的解决方案之后也是如此。
在我的例子中,我有自己的 @IBDesignable
class 驻留在主模块中(因此,不是来自 CocoaPod 或其他外部模块)。然而,即使在为我的视图 class 指定 objc(ClassName)
时,自动生成的 class 名称仍在构建时由 Interface Builder 使用。
最后,我在IB中删除了模块名称和模块继承,从而消除了错误并获得了视图预览渲染:
所以,对我来说完整的解决方案是:
- 为 Swift class
声明一个 Objective-C class 名称
- 如上所示在 Interface Builder 中配置 class
自 Xcode 11 起,Swift 似乎都需要两者。值得注意的是,尽管删除了模块引用,但我在运行时的视图没有任何问题。我也不确定这个解决方案如何查找从其他模块导入的视图。
我在 Xcode 12.1 时开始遇到这种情况。到目前为止,只需 un-checking 然后 re-checking Interface Builder 中的“Inherit Module From Target”似乎就解决了这个问题。
我正在尝试使用自定义 swift class 子class 我的 Storyboard 上的 UIButton,它应该将按钮显示为自定义 Hamburger Button。
我收到此警告,但没有看到在 Interface Builder 中呈现的 Hamburger 按钮,尽管它会间歇性地工作。
自定义的class叫NTHamburgerButton,不知道为什么在class名字前面出现了字符上的字符串。
IB Designables: Using class UIButton for object with custom class because the class _TtC6CProjectName17NTHamburgerButton does not exist.
我也遇到了同样的问题,我从另一个问题中找到了答案: enter link description here
我只是刷新所有视图
对我有用。希望对你也有帮助。
这个问题好像又引起了一些关注,所以我会更新一下。
这个问题存在于 Obj-C 和 Swift 混合项目中。所以有问题的 Class 是 Swift Class.
使 Swift classes 在 Obj-C 中可用时,您可以使用以下语法
@objc(NTHamburgerButton) public class NTHamburgerButton : UIButton {}
否则在 Xcode 创建的 {Project-Name}-Swift.h 文件中,您会看到它生成了这些唯一的 class 名称,就像问题中的那样。
这里唯一真正的问题是 NTHamburgerButton.swift 文件没有包含在我当时查看的产品中,但如果我切换目标,它工作正常。因此间歇性问题。
对我来说,Codermonk 和 specialvict 的解决方案都是必要的,但还不够。
我还必须在 Interface Builder 中打开 Inherit From Target:
这对我有用。
我在 Xcode 11 中遇到了这个错误,即使在应用了其他给出的解决方案之后也是如此。
在我的例子中,我有自己的 @IBDesignable
class 驻留在主模块中(因此,不是来自 CocoaPod 或其他外部模块)。然而,即使在为我的视图 class 指定 objc(ClassName)
时,自动生成的 class 名称仍在构建时由 Interface Builder 使用。
最后,我在IB中删除了模块名称和模块继承,从而消除了错误并获得了视图预览渲染:
所以,对我来说完整的解决方案是:
- 为 Swift class 声明一个 Objective-C class 名称
- 如上所示在 Interface Builder 中配置 class
自 Xcode 11 起,Swift 似乎都需要两者。值得注意的是,尽管删除了模块引用,但我在运行时的视图没有任何问题。我也不确定这个解决方案如何查找从其他模块导入的视图。
我在 Xcode 12.1 时开始遇到这种情况。到目前为止,只需 un-checking 然后 re-checking Interface Builder 中的“Inherit Module From Target”似乎就解决了这个问题。