• 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 }

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

  • 相关阅读:
    Django REST framework
    容器平台自动化CI/CD流水线实操
    VUE--webpack
    vue动态路由匹配
    VUE学习---vue基础与vue-router
    MYSQL-创建测试数据
    MYSQL-主键、外键
    MYSQL-数据库、表、数据操作
    MySQL-添加环境变量 及MySQL服务启停
    MYSQL-命令行
  • 原文地址:https://www.cnblogs.com/gchlcc/p/5248742.html
Copyright © 2020-2023  润新知