zoukankan      html  css  js  c++  java
  • 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 }

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

  • 相关阅读:
    DBSCAN算法及sklearn实现
    K-MEANS算法及sklearn实现
    Linux删除有规则文件夹,比如(50-100)
    11.tensorboard网络结构
    10.优化器
    9.正则化
    8.Dropout
    Linux中awk后面的RS, ORS, FS, OFS 含义
    hadoop 客户的的使用
    shell中的>&1和 >&2是什么意思?
  • 原文地址:https://www.cnblogs.com/gchlcc/p/5248742.html
Copyright © 2011-2022 走看看