XIB学习

XIB学习
重点
        /**
         除去图片资源,其他的所有资源都需要bundle来读取
         */
        //1、读取文件
        NSBundle * bundle = [NSBundle mainBundle];
        //2、读取xib文件,创建xib中描述的所有对象,并且按顺序放到数组中返回
        NSArray *objs = [bundle loadNibNamed:@"FLAppView" owner:nil options:nil];
        //3、创建View
        UIView *appView = [objs lastObject];
        appView.frame = CGRectMake(appX, appY, appW, appH);
        //4、添加View
        [self.view addSubview:appView];

        //5、设置数据
        FLApp *app =  self.apps[index];
        
        /**
         重点:拿到我们的对应的xib对应的每个View
         */
        //第一种写法
        UIImageView *iconView1 = appView.subviews[0];
        //第二种写法:绑定Tag
        UIImageView *iconView2 = (UIImageView *)[appView viewWithTag:10];

--------------------------------------------------------------------------------------------------------
封装,将xib的View封装起来,

关键总结:
1、新建一个继承UIView的自定义View,假设类名叫做(FLAppView)
2、新建一个FLAppView.xib的名字的xib文件描述FLAppView内部的结构
3、修改UIView的类型为我们的FLAppView的类型(能够拖线)
4、将内部的子控件跟FLAppView的属性连线
5、FLAppView提供一个模型属性
6、重写模型属性的set方法,因为set方法中可以拿到外界传递的数据模型
7、把模型数据拆开,分别设置数据对应的子控件中
8、提供一个创建类FLAppView的类方法,将读取XIB文件的代码屏蔽起来

***************************************
重点:将XIB的布局的View改成对应的类名的View
写一个类扩展,将所有的属性写到类扩展中间去
@interface FLAppView()
@property.....
@end
实现方法

声明

#import <UIKit/UIKit.h>
#import "FLApp.h"

@interface FLAppView : UIView

@property(nonatomic ,strong) FLApp *app;

+ (instancetype)appView;

@end
***************************************
实现
#import "FLAppView.h"

@interface FLAppView()
@property (weak, nonatomic) IBOutlet UIImageView *iconView;
@property (weak, nonatomic) IBOutlet UILabel *nameLabel;

@end

@implementation FLAppView

+ (instancetype)appView
{
    //1、读取文件
    NSBundle *bundle = [NSBundle mainBundle];
    //2、读取xib文件,创建xib中描述的所有对象,并且按顺序放到数组中返回
    NSArray *objs = [bundle loadNibNamed:@"FLAppView" owner:nil options:nil];
    //3、创建View
    return [objs lastObject];
}

- (void)setApp:(FLApp *)app
{
    _app = app;
    
    self.iconView.image = [UIImage imageNamed:app.icon];
    self.nameLabel.text = app.name;
    
}

@end
***************************************

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值