关于Xib 需要注意的地方

时间:2023-01-08 11:44:09

当你需要写一个繁琐的界面但是又是静态页面时,很可能会用到xib

【特例:创建继承于UIView的文件时,不带自动生成xib的勾选项,需要开发人员手动new一个同名的xib文件,在该xib文件右侧的class中选择相应的文件名】如图:关于Xib 需要注意的地方

需要注意的几点:

(1)一个xib里的所有控件只能放到自己的@interface声明里,不能放到其他的文件中去

(2)学会合理利用init方法,加载xib时,需要loadNibName一下,放在init方法里会更好一些,方便我们后续在init方法中添加一些别的控件设置,,在controller中调用的时候只需要填写init方法即可,不需要担心它是xib或者是纯代码了,用法如下:

-(instancetype)init{

    self = [super init];

    if (self) {

//重点在这里:

        self = [[[NSBundle mainBundle]loadNibNamed:@"JYEMainActivityPageView" owner:nil options:nil] firstObject];

       //一些其他的设置都可写在这里、、需要注意的是,@""内的内容就是xib文件的名字

    }

    return self;

}

在cell中是这样的:

- (instancetype)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier{

    self = [super initWithStyle:style reuseIdentifier:reuseIdentifier];

    if (self) {

            self = [[[NSBundle mainBundle]loadNibNamed:@"JYEMineCell" owner:self options:nil] lastObject];

     //一些其他设置【如果cell的内容来自Model的话,也可以定义一个model属性,在他的set方法中进行一些其他的设置】

    }

    return self;

}

 

(3)或者这样:注册一下,让你的tableview知道它要到复用池里找的哪些cell

    [self.tableView registerNib:[UINib nibWithNibName:NSStringFromClass([JYERecordCell class]) bundle:nil] forCellReuseIdentifier:NSStringFromClass([JYERecordCell class])];

 

    JYERecordCell * recordCell = [tableView dequeueReusableCellWithIdentifier:NSStringFromClass([JYERecordCell class])];