[英]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文件才能删除该模块。
将框架添加到另一个项目时,现在一切正常。 没有错误,并且自定义视图显示按预期方式。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.