繁体   English   中英

loadNibNamed()失败:未知类 <mangled Swift identifier> 在Interface Builder文件中

[英]loadNibNamed() fails: Unknown class <mangled Swift identifier> in Interface Builder file

我已经将代码移至Xcode框架,现在loadNibNamed()失败(我更改了loadNibNamed()的Swift标识符名称的可读部分):

Unknown class _TtC13MyFramework14MyTableCell in Interface Builder file.

从具有MyFramework目标成员资格的Swift文件中调用loadNibNamed()

UITableViewCell子类( MyTableCell )是一个Obj-C类。 它的标头具有public MyFramework Target成员身份,并且它的.m也是框架的成员。 该单元非常简单,具有一个UIImageView和一些UILabel ,没有自定义类。

在XIB中,表单元格的Class已设置为MyTableCell 并且,将Module to MyFramework选中了从目标继承模块。

我已经设置了框架的产品捆绑包标识符。 我使用以下方法获得捆绑包:

[NSBundle bundleWithIdentifier:@"com.mycompany.myframework"];

找到捆绑包; 通过打印其bundlePath进行检查。

我已经查找了这个问题并尝试了各种变化,例如未分配``MyTableCell`的模块,但没有任何效果。 我还用Swift类创建了一个新的单元格XIB,但是结果相同。

有什么想法我应该/仍然可以尝试吗?

我想出了一些对我有用的解决方案-YMMV。

因此,在我的情况下,我需要向Objective C运行时公开一些自定义的Swift UIControl子类。 我是这样添加注释的:

@objc(CustomButton)
public class CustomButton: UIButton {
    // some implementation
}

将此类添加到Framework时,会出现错误,与您的错误非常相似。

Unknown class _TtC9CustomFramework12CustomButton in Interface Builder file.

要解决此问题,我必须修改XIB文件才能删除该模块。

在XIB中删除模块

将框架添加到另一个项目时,现在一切正常。 没有错误,并且自定义视图显示按预期方式。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM