使用xib封装一个自定义view的步骤

时间:2023-03-08 17:19:15

使用xib封装一个自定义view的步骤

1> 新建一个继承UIView的自定义view,假设类名叫做(MJAppView)

2> 新建一个MJAppView.xib文件来描述MJAppView内部的结构

3> 修改UIView的类型为MJAppView真是类型

4> 将内部的子控件跟MJAppView进行属性连线

5> MJAppView提供一个模型属性

6> 重写模型属性的set方法,因为在set方法中可以拿到外界传递的模型数据

7> 把模型数据拆开,分别设置数据到对应的子控件中

8> 补充:提供一个创建MJAppView的类方法,将读取xib文件的代码屏蔽起来

//

//  MJAppView.h

//  01-应用管理

//

//  Created by apple on 14-3-26.

//  Copyright (c) 2014年 itcast. All rights reserved.

//

#import <UIKit/UIKit.h>

@class MJApp;

@interface MJAppView : UIView

/**

*  模型数据

*/

@property (nonatomic, strong) MJApp *app;

+ (instancetype)appView;

/**

*  通过模型数据来创建一个view

*/

+ (instancetype)appViewWithApp:(MJApp *)app;

@end

//

//  MJAppView.m

//  01-应用管理

//

//  Created by apple on 14-3-26.

//  Copyright (c) 2014年 itcast. All rights reserved.

//

#import "MJAppView.h"

#import "MJApp.h"

@interface MJAppView()

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

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

@end

@implementation MJAppView

//+ (instancetype)appView

//{

//    NSBundle *bundle = [NSBundle mainBundle];

//    // 读取xib文件(会创建xib中的描述的所有对象,并且按顺序放到数组中返回)

//    NSArray *objs = [bundle loadNibNamed:@"MJAppView" owner:nil options:nil];

//    return [objs lastObject];

//}

//

//+ (instancetype)appViewWithApp:(MJApp *)app

//{

//    MJAppView *appView = [self appView];

//    appView.app = app;

//    return appView;

//}

+ (instancetype)appViewWithApp:(MJApp *)app

{

NSBundle *bundle = [NSBundle mainBundle];

// 读取xib文件(会创建xib中的描述的所有对象,并且按顺序放到数组中返回)

NSArray *objs = [bundle loadNibNamed:@"MJAppView" owner:nil options:nil];

MJAppView *appView = [objs lastObject];

appView.app = app;

return appView;

}

+ (instancetype)appView

{

return [self appViewWithApp:nil];

}

- (void)setApp:(MJApp *)app

{

_app = app;

// 1.设置图标

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

// 2.设置名称

self.nameLabel.text = app.name;

}

@end