xib中嵌套使用xib
在xib中嵌套使用xib,如果使用不正确会导致子xib最后加载不出来(具体原因可以查看第一篇参考文章)。可行的方法如下:
新建工程,创建test.xib,设置个颜色,拖个label进去。
创建test类。
【xib中嵌套使用xib】选中test.xib中file's owner,然后在它的Inspector (cmd + opt + 3) 中设置它的Custom Class为test。
在test.m中重写- (instancetype)initWithCoder:(NSCoder *)aDecoder方法:
- (instancetype)initWithCoder:(NSCoder*)aDecoder{self= [superinitWithCoder:aDecoder];
if(self) {UIView*containerView = [[[UINibnibWithNibName:NSStringFromClass([selfclass]) bundle:nil] instantiateWithOwner:selfoptions:nil] firstObject ];
containerView.frame=self.bounds;
[selfaddSubview:containerView];
}returnself;
}
5.在父xib(storyboard就行)中拖一个View,在该View的Inspector中设置它的Custom Class为test。
6.运行看看效果。
7.如果想要控制test.xib中的label的话,只需要将test.xib中的label与test类中的@property (weak, nonatomic) IBOutlet UILabel *label;
关联即可。
需要注意的点:
加载containerView时需要使用[UINib nibWithNibName:NSStringFromClass([self class]) bundle:nil] instantiateWithOwner:self options:nil],而不要使用[[[NSBundle mainBundle] loadNibNamed:NSStringFromClass([self class]) owner:nil options:nil] firstObject],否则当你将test.xib中的label与test类中的label属性关联后运行程序时会发生崩溃,具体原因不详。。。如果有人晓得的话可以告诉我。。。
参考文章:
Nested Xib Views - 使用XIB实现嵌套自定义视图
iOS Interface Builder:在.xib文件中加载另一个.xib文件
= =.第一次写文章,只是为了记录一下自己遇到的问题,方便以后如果忘记了进行查阅。如果不小心帮到了哪位小伙伴那就更好了,要是有看不明白的地方希望告诉我,我会修改。有的地方我也认识的不是很深刻,要是有哪些地方出错了还希望能够指出来,不胜感激。
转载自:http://www.jianshu.com/p/e63958d9f08b
推荐阅读
- 公司会议中发生冲突怎么办?|公司会议中发生冲突怎么办? 5招解决这个难题!
- 亲子日记97天
- 泰坦尼克号
- 黄鹌菜
- CSS中提升优先级属性!important的用法总结
- [职场]如何扮演好上司心目中的好员工角色
- tail|tail -f 、tail -F、tailf的区别
- Win10系统中找不到截屏后的图片怎样办
- Win10如何更改设置中心迅速设置按钮排列位置
- Win10系统中为右键菜单加入“移动到/复制到”选项的办法