ios-(Xib的使用) 工作随笔

0 篇文章 0 订阅

xib的应用场景:

    Xib是用来描述局部的软件界面的,要求要描述的界面的子控件相对于父控件的位置要固定不变,并且加载Xib时,最终得到的是一个数组,这个数组表示的是我们这个Xib文件中有多少个界面,一般情况下,为了简便,我们的Xib文件中都只放一个界面,这样以便于可以通过返回的数组的 lastObject和firstObject拿到它(因为文件里面就是它一个),但是要给Xib里面的子控件设置数据的话,可以有两种方法:

    1>第一种是通过数组和下标的方法拿到它的子控件,再设置数据,但是这种方法很盲目。
    2>第二种是把这个Xib封装进一个类,也就是把它交给一个类来管理,这样就可以通过连线的方式直接拿到XIb的子控件,再给它设置数据,这种方法直观准确,我们一般用这种。

xib的使用注意:
      1>xib创建完后一定要记得改class类型
2>当通过Xib来加载View时,是不会执行init方法和initWithFrame方法
3>当通过Xib来加载View时,会执行initWithCoder(初始化当前控件)和awakeFromNib(所有控件都已经初始化完)
4>如果想要通过Xib来加载View,不能通过alloc init或者initWithFrame创建View.(创建出来为空)
5>为了方便外界可以快速通过Xib来创建View,通常情况下,View会对外提供一个类方法来创建
 下面是封装Xib的代码

.h文件代码

#import <UIKit/UIKit.h>


@class Flag;

@interface FZFlagView : UIView


@property(nonatomic, strong) Flag *flag;


+ (instancetype)flagView;

@end


.m文件代码

#import "FZFlagView.h"

#import "Flag.h"

@interface FZFlagView ()


@property (weak, nonatomic) IBOutlet UILabel *nameView;

@property (weak, nonatomic) IBOutlet UIImageView *iconView;


@end


@implementation FZFlagView

// 加载xib的类方法

+ (instancetype)flagView

{

return [[[NSBundle mainBundle] loadNibNamed:@"FZFlagView" owner:nil options:nil]

    firstObject];

}

// 重写模型Flagsetter方法

- (void)setFlag:(Flag *)flag

{

    _flag = flag;

    self.nameView.text = flag.name;

    self.iconView.image = [UIImage imageNamed:flag.icon];

}

@end



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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值