1.新建一个继承UIView的自定义view,假设类名叫做 MyAppVew
#import
@class MyApp;
@interface MyAppView : UIView
@property(strong,nonatomic) MyApp*app;
+(instancetype)appView;
@end
MyAppView.h
#import "MyAppView.h"
#import "MyApp.h"
@interface MyAppView ()
@property (weak, nonatomic) IBOutlet UIImageView *iconView;
@property (weak,nonatomic) IBOutlet UILabel *nameLable;
@implementation MyAppView
-(void)setApp:(MyApp *) app
{
_app=app;
self.iconView.image=[UIImage imageNamed:app.icon];
self.nameLable.text=app.name;
//NSLog(@"%@", app.icon);
}
+(instancetype) appView{
NSBundle \*bundle=\[NSBundle mainBundle\];
NSArray \*objs=\[bundle loadNibNamed:@"AppInfoView" owner:nil options:nil\];
return \[objs lastObject\];
}
+(instancetype) appViewWithApp:(MyApp *)app{
MyAppView *appView=[self appView];
appView.app=app;
return appView;
}
2.新建一个MyAppVIew.xib文件来描述MyAppView内部结构
3.修改UIView的类型为MyAppView类型
4.将内部的子控件跟MyAppView进行属性连线
5.MyAppView提供一个模型属性
@interface MyAppView ()
@property (weak, nonatomic) IBOutlet UIImageView *iconView;
@property (weak,nonatomic) IBOutlet UILabel *nameLable;
6.重写模型属性的set方法,因为set方法中可以拿到外界传递的模型数据
-(void)setApp:(MyApp *) app
{
_app=app;
self.iconView.image=[UIImage imageNamed:app.icon];
self.nameLable.text=app.name;
//NSLog(@"%@", app.icon);
}
7.把模型数据拆开,分别设置数据到对应的子控件中
8.补充:提供一个创建MyAppView的类方法,将读取的.xib文件的代码屏蔽起来
+(instancetype) appView{
NSBundle \*bundle=\[NSBundle mainBundle\];
NSArray \*objs=\[bundle loadNibNamed:@"AppInfoView" owner:nil options:nil\];
return \[objs lastObject\];
}
+(instancetype) appViewWithApp:(MyApp *)app{
MyAppView *appView=[self appView];
appView.app=app;
return appView;
}
通过封装数据,对mvc有了初步认识。
手机扫一扫
移动阅读更方便
你可能感兴趣的文章