我已将代码移至Xcode框架,但现在loadNibNamed()
失败了(我更改了Swift标识符名称的可读部分):
Unknown class _TtC13MyFramework14MyTableCell in Interface Builder file.
从loadNibNamed()
目标成员资格的Swift文件中调用MyFramework
。
UITableViewCell
子类(MyTableCell
)是Obj-C类。它的标头具有public
MyFramework
目标成员身份,并且它的.m
也是框架的成员。该单元格非常简单,有一个UIImageView
和几个UILabel
,没有自定义类。
在XIB中,表格单元的“类”已设置为MyTableCell
。并且,将模块设置为MyFramework
,并选择“从目标继承模块”。
我已经设置了框架的产品捆绑包标识符。我使用以下方法获得捆绑包:
[NSBundle bundleWithIdentifier:@"com.mycompany.myframework"];
找到捆绑包;通过打印其bundlePath
进行检查。
我已经查看了这个问题并尝试了各种变体,例如未分配``MyTableCell`的模块,但没有任何效果。我还用Swift类创建了一个新的单元格XIB,但是结果相同。
有什么想法我应该/仍然可以尝试吗?
答案 0 :(得分:0)
我想出了一些对我有用的解决方案-YMMV。
因此,在我的情况下,我需要向Objective C运行时公开一些自定义的Swift UIControl子类。我是这样添加注释的:
@objc(CustomButton)
public class CustomButton: UIButton {
// some implementation
}
将此类添加到框架时,会出现错误,与您的错误非常相似。
Unknown class _TtC9CustomFramework12CustomButton in Interface Builder file.
要解决此问题,我必须修改XIB文件才能删除该模块。
将框架添加到另一个项目时,现在一切正常。没有错误,并且自定义视图按预期显示。