01.3.XIB
XIB的加载
- 方法1
NSArray *views = [[NSBundle mainBundle] loadNibNamed:@"xib文件名" owner:nil options:nil]
- 方法2
UINib *nib = [UINib nibWithNibName:@"xib文件名" bundle:nil];
NSArray *views = [nib instantiateWithOwner:nil options:nil];
注意点
- 一个控件有2种创建方式
- 通过代码创建
- 初始化时一定会调用initWithFrame:方法
- 通过xib\storyboard创建
- 初始化时不会调用initWithFrame:方法,只会调用(控件从XIB中创建中)initWithCoder:方法
- 初始化完毕后(控件从XIB中创建完毕)会调用awakeFromNib方法
- 通过代码创建
- 有时候希望在控件初始化时做一些初始化操作,比如添加子控件、设置基本属性
- 这时需要根据控件的创建方式,来选择在initWithFrame:、initWithCoder:、awakeFromNib的哪个方法中操作
思考
基于UIView的xib
一定要在init方法或者initFrame中写上xib的加载方法
虽然这个XIB属于这个类 但是这个类并不知道自己能控制这个XIB
为什么ViewController不用呢 因为 控制器初始化的时候会先去寻找有没有和自己同名的XIB 有的话就会加载这个XIB