swift混编调用oc编写的Xib UIView出现[Storyboard] Unknown class in Interface Builder file.问题的解决

18 篇文章 0 订阅
5 篇文章 0 订阅


之前封装xib都是封装的控制器,今年开始把UIView封装成Xib,这样更灵活,但是之前都是封装的Swift的Xib给Swift项目用,今天封装了Oc Xib给Swift项目调用发现了问题.在Storyboard里面不识别oc 的Xib

编译器运行后报错

[Storyboard] Unknown class _TtC24TDWTZImagePickerViewDemo20TDWTZImagePickerView in Interface Builder file.
意思Interface Builder 可视化编辑文件中找不到类TDWTZImagePickerView .
但是编译却通过了,运行时候有问题.这个如果是普通的swift项目,马上就知道是类名写错导致的.但是我已经在桥接文件里面导入了正确的.h文件
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

问题原因:

swift项目导入oc 的xib,如果是当前项目生成的xib,可以在inherit Module From Target上面打勾,跟我上面配置一样,但是我这个oc的xib是其他项目里面写的xib,在当前项目里面是为了使用.所以不能这样选择inherit Module From Target,翻译过来就是:从target继承模块 .这个打勾的话,不行.

这种问题仅限于swift调用其他项目的oc xib

我实验了用swift项目调用其他swift xib就没事.

看看正确的swift调用其他项目oc xib UIView的配置方法:

其他项目的oc xib配置如下:

File’s owner 勾选 :inherit Module From Target .模块继承自target
在这里插入图片描述
在要加载的视图里面,例如Main.Storyboard里面新建UIView,在类名里面写上 oc的Xib名字,并且module不写东西,下面的inherit Module From Target也不勾选.
在这里插入图片描述
然后运行之后就会发现.storyboard可以找到oc 的xib,并且运行到了 xib绑定的类文件的initWithCoder中,如下图,storyboard找到了xib绑定的类文件:在这里插入图片描述

运行结果如下,xib的视图被加载到了storyboard上面:
在这里插入图片描述

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值