1.新建一個繼承UIView的自定義view,假設類名叫做 MyAppVew
#import <UIKit/UIKit.h> @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; @end @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; } @end
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有了初步認識。