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

results matching ""

    No results matching ""