自定义View(加载Xib方式)

xib的使用

  • Xib和Storyboard的对比

    • 共同点:
    • 都用来描述软件界面
    • 都用Interface Builder工具来编辑
    • 本质都是转换成代码去创建
  • 不同点

    • Xib是轻量级的用来描述局部的UI界面
    • Storyboard是重量级的,用来描述整个软件的多个界面,并且能够展示多个界面之间的跳转关系.
  • Xib的加载方式:

    • 第一种(推荐使用):
NSArray *views = [[NSBundle mainBundle] loadNibNamed:@"xib文件名" owner:nil options:nil]
  • 第二种:
UINib *nib = [UINib nibWithNibName:@"xib文件名" bundle:nil];
NSArray *views = [nib instantiateWithOwner:nil options:nil];
  • 加载Xib后可以返回一个数组,保存的是添加到Xib中的控件(第一级控件),添加顺序决定在数组中的顺序.

xib的使用

  • Xib和Storyboard的对比
  • 共同点:

    • 都用来描述软件界面
    • 都用Interface Builder工具来编辑
    • 本质都是转换成代码去创建
  • 不同点

    • Xib是轻量级的用来描述局部的UI界面
    • Storyboard是重量级的,用来描述整个软件的多个界面,并且能够展示多个界面之间的跳转关系.
  • Xib的两种加载方式:

    • 第一种(推荐使用):
NSArray *views = [[NSBundle mainBundle] loadNibNamed:@"xib文件名" owner:nil options:nil]
UINib *nib = [UINib nibWithNibName:@"xib文件名" bundle:nil];
NSArray *views = [nib instantiateWithOwner:nil options:nil];
- 加载Xib后可以返回一个数组,保存的是添加到Xib中的控件(第一级控件),添加顺序决定在数组中的顺序.

自定义View的步骤:

  • 新建自定义控件类
  • 新建与自定义类名相同的Xib文件(在加载Xib时,可以通过类名获取,不用手写)

    • 修改Xib文件中View的class名(关联Xib和自定义类,为一些属性连线)
    • 自定义类中加载Xib文件
  • 增加模型属性,在模型属性set方法中设置数据到子控件上
    自定义类
    这里写图片描述

#import "WQShopsView.h"
#import "WQShopData.h"
@interface WQShopsView()
@property (weak, nonatomic) IBOutlet UIImageView *imageView;
@property (weak, nonatomic) IBOutlet UILabel *nameLabel;

@end
@implementation WQShopsView
// 先创建对象,后传入数据模型
+ (instancetype)shopsView
{
    return [self shopViewWithShop:nil];
}
// 提供创建对象时,传入数据模型接口
+ (instancetype)shopViewWithShop:(WQShopData *)shopdata
{

    WQShopsView *shopView = [[WQShopsView alloc] init];
    shopView.shopData = shopdata;
    return [[[NSBundle mainBundle] loadNibNamed:NSStringFromClass(self) owner:nil options:nil] lastObject];
}
/**
 *为View中的控件传入数据模型时,设置数据
 */
- (void)setShopData:(WQShopData *)shopData
{
    if (!shopData) {
        _shopData = shopData;
        self.nameLabel.text = shopData.name;
        // 当imageNamed:参数为空时
        //会打印:CUICatalog: Invalid asset name supplied: (null)
        self.imageView.image = [UIImage imageNamed:shopData.icon];
    }
}
@end


控制器调用:
WQShopsView *shopsview = [WQShopsView shopsView];
shopsview.shopData = self.shopsData[index];
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值