iOS边练边学--xib文件初使用

一、Xib和storyboard对比

  *共同点:

  1>都用来描述软件界面

  2>都用Interface Builder工具来编辑

  3>本质都是转换成代码去创建控件

  *不同点

  1>Xib是轻量级的,用来描述局部的UI界面

  2>storyboard是重量级的,用来描述整个软件的多个界面,并且能展示多个界面之间的跳转关系

二、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];

三、使用xib自定义view的步骤

  *新建自定义控件类,继承自UIView

  *新建xib文件(文件名建议和view的类名一致)

    

  *修改xib中view的类名

  *封装xib的加载过程,将读取xib文件的步骤封装到类里面,由于xib文件名与类同名,所以可以直接获取类的名称来使用NSStringFromClass(self)

1 + (ChaosShopView *)shopView
2 {
3     ChaosShopView *shopView = [[[NSBundle mainBundle] loadNibNamed:NSStringFromClass(self) owner:nil options:nil] lastObject];
4     return shopView;
5 }

  *增加模型属性,在模型属性的set方法中设置数据到子控件上

1 // 重写setShopModel方法,给模型赋值的过程中,给子控件数据
2 - (void)setShopModel:(ShopModel *)shopModel
3 {
4     // 重写set方法必备一句,将传过来的变量赋值给成员变量
5     _shopModel = shopModel;
6     
7     [_viewImage setImage:[UIImage imageNamed:shopModel.icon]];
8     _nameLabel.text = shopModel.name;
9 }

  *子控件的访问可以定义在扩展类中,用“脱线”的方式来实现

原文地址:https://www.cnblogs.com/gchlcc/p/5248742.html