標籤:
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有了初步認識。
IOS中使用.xib檔案封裝一個自訂View