iOS--MVC設計模式

MVC簡單的說就是Model View Controller(模型,視圖评矩,控制器)抠刺,其用意就是將數(shù)據(jù)與視圖分離開來塔淤,充分理解iOS的MVC模式,有助于我們程序的組織和理性速妖。

MVC的明顯特征和體現(xiàn):

1.View視圖的顯示高蜂,取決于Model,只要Model數(shù)據(jù)改變了罕容,View的顯示狀態(tài)也會跟著改變

2.Controller負責初始化Model备恤,并將Model傳遞給View去解析展示

3.簡單的MVC即控制器加載模型數(shù)據(jù)并數(shù)據(jù)轉(zhuǎn)化為數(shù)據(jù)模型稿饰,控制器創(chuàng)建視圖控件,并將模型數(shù)據(jù)傳遞給視圖控件露泊。

4.MVC的缺點:較差的可測試性喉镰,由于控制器混合了視圖處理邏輯和業(yè)務邏輯,分離這些成分的單元測試成了一個艱巨的任務惭笑,大多數(shù)人選擇忽略這個任務侣姆,那就是不做任何測試。

5.MVC的優(yōu)點:低耦合性沉噩、高重用性和可適用性捺宗、可維護性(分離視圖層和業(yè)務邏輯層也使得應用更易于維護和修改)。

M------模型


#import@interface Worker : NSObject

@interface Worker : NSObject

@property (nonatomic,strong) NSString* name;//姓名

@property (nonatomic,assign) NSString* age;//年齡

@property (nonatomic,strong) NSString* workType;//職業(yè)

@property (nonatomic,assign) NSString* wage;//工資

@property (nonatomic,assign) NSString* workTime;//工作年限

@property (nonatomic,strong) NSDictionary* dict;

- (instancetype)initWithDict:(NSDictionary *)dic;

@end


#import "Worker.h"

@implementation Worker

- (instancetype)initWithDict:(NSDictionary *)dic{

if (self = [super init]) {

self.dict = dic;

}

return self;

}

- (void)setDict:(NSDictionary *)dict{

self.name = [dict objectForKey:@"name"];

self.age = [dict objectForKey:@"age"] ;

self.workType = [dict objectForKey:@"workType"];

self.wage = [dict objectForKey:@"wage"] ;

self.workTime = [dict objectForKey:@"workTime"];

}

@end


V------視圖-view

#import#import "Worker.h"

@interface WorkerInfoView : UIView

@property (nonatomic,strong) UILabel* nameLab;

@property (nonatomic,strong) UILabel* workTypeStr;

@property (nonatomic,strong) UILabel* workTimeLab;

@property (nonatomic,strong) UILabel* wageLab;

@property (nonatomic,strong) UILabel* ageLab;

@property (nonatomic,strong) Worker* worker;

@end


#import "WorkerInfoView.h"

#import "UIViewExt.h"

@implementation WorkerInfoView

- (instancetype)initWithFrame:(CGRect)frame

{

if (self = [super initWithFrame:frame]) {

//名字

self.nameLab = [[UILabel alloc]init];

[self addSubview:self.nameLab];

self.nameLab.textAlignment = NSTextAlignmentCenter;

self.nameLab.font = [UIFont systemFontOfSize:14.0f];

self.nameLab.textColor = [UIColor blackColor];

//職業(yè)

self.workTypeStr = [[UILabel alloc]init];

[self addSubview:self.workTypeStr];

self.workTypeStr.textAlignment = NSTextAlignmentCenter;

self.workTypeStr.font = [UIFont systemFontOfSize:14.0f];

self.workTypeStr.textColor = [UIColor blackColor];

//工作時間

self.workTimeLab = [[UILabel alloc]init];

[self addSubview:self.workTimeLab];

self.workTimeLab.textAlignment = NSTextAlignmentCenter;

self.workTimeLab.font = [UIFont systemFontOfSize:14.0f];

self.workTimeLab.textColor = [UIColor blackColor];

//工資

self.wageLab = [[UILabel alloc]init];

[self addSubview:self.wageLab];

self.wageLab.textAlignment = NSTextAlignmentCenter;

self.wageLab.font = [UIFont systemFontOfSize:14.0f];

self.wageLab.textColor = [UIColor blackColor];

//年齡

self.ageLab = [[UILabel alloc]init];

[self addSubview:self.ageLab];

self.ageLab.textAlignment = NSTextAlignmentCenter;

self.ageLab.font = [UIFont systemFontOfSize:14.0f];

self.ageLab.textColor = [UIColor blackColor];

}

return self;

}

- (void)layoutSubviews{

self.nameLab.frame = CGRectMake(self.left+10,10, 80, 30);

self.workTypeStr.frame = CGRectMake(self.nameLab.left, self.nameLab.bottom, 80, 30);

self.workTimeLab.frame = CGRectMake(self.workTypeStr.left, self.workTypeStr.bottom, 80, 30);

self.wageLab.frame = CGRectMake(self.workTimeLab.left, self.workTimeLab.bottom, 80, 30);

self.ageLab.frame = CGRectMake(self.wageLab.left, self.wageLab.bottom, 80, 30);

}

- (void)setWorker:(Worker *)worker{

self.nameLab.text = worker.name;

self.workTypeStr.text = worker.workType;

self.workTimeLab.text = worker.workTime;

self.wageLab.text = worker.wage;

self.ageLab.text = worker.age;

}

@end

C----控制器---

NSDictionary* dict = @{@"name":@"zhaobin",@"age":@"12",@"workType":@"iOS",@"wage":@"保密",@"workTime":@"2"};

//? ? Worker* worke = [[Worker alloc]initWithDict:dict];

WorkerInfoView* infoView = [[WorkerInfoView alloc]init];

infoView.frame = CGRectMake(0, 80, 200, 200);

infoView.backgroundColor = [UIColor redColor];

Worker* worke = [[Worker alloc]init];

worke.dict = dict;

infoView.worker =worke;

[self.view addSubview:infoView];

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末川蒙,一起剝皮案震驚了整個濱河市蚜厉,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌畜眨,老刑警劉巖昼牛,帶你破解...
    沈念sama閱讀 222,104評論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異康聂,居然都是意外死亡贰健,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,816評論 3 399
  • 文/潘曉璐 我一進店門早抠,熙熙樓的掌柜王于貴愁眉苦臉地迎上來霎烙,“玉大人,你說我怎么就攤上這事蕊连。” “怎么了游昼?”我有些...
    開封第一講書人閱讀 168,697評論 0 360
  • 文/不壞的土叔 我叫張陵甘苍,是天一觀的道長。 經(jīng)常有香客問我烘豌,道長载庭,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 59,836評論 1 298
  • 正文 為了忘掉前任廊佩,我火速辦了婚禮囚聚,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘标锄。我一直安慰自己顽铸,他們只是感情好,可當我...
    茶點故事閱讀 68,851評論 6 397
  • 文/花漫 我一把揭開白布料皇。 她就那樣靜靜地躺著谓松,像睡著了一般星压。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上鬼譬,一...
    開封第一講書人閱讀 52,441評論 1 310
  • 那天娜膘,我揣著相機與錄音,去河邊找鬼优质。 笑死竣贪,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的巩螃。 我是一名探鬼主播演怎,決...
    沈念sama閱讀 40,992評論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼牺六!你這毒婦竟也來了颤枪?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,899評論 0 276
  • 序言:老撾萬榮一對情侶失蹤淑际,失蹤者是張志新(化名)和其女友劉穎畏纲,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體春缕,經(jīng)...
    沈念sama閱讀 46,457評論 1 318
  • 正文 獨居荒郊野嶺守林人離奇死亡盗胀,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,529評論 3 341
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了锄贼。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片票灰。...
    茶點故事閱讀 40,664評論 1 352
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖宅荤,靈堂內(nèi)的尸體忽然破棺而出屑迂,到底是詐尸還是另有隱情,我是刑警寧澤冯键,帶...
    沈念sama閱讀 36,346評論 5 350
  • 正文 年R本政府宣布惹盼,位于F島的核電站,受9級特大地震影響惫确,放射性物質(zhì)發(fā)生泄漏手报。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 42,025評論 3 334
  • 文/蒙蒙 一改化、第九天 我趴在偏房一處隱蔽的房頂上張望掩蛤。 院中可真熱鬧,春花似錦陈肛、人聲如沸揍鸟。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,511評論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽蜈亩。三九已至懦窘,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間稚配,已是汗流浹背畅涂。 一陣腳步聲響...
    開封第一講書人閱讀 33,611評論 1 272
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留道川,地道東北人午衰。 一個月前我還...
    沈念sama閱讀 49,081評論 3 377
  • 正文 我出身青樓,卻偏偏與公主長得像冒萄,于是被迫代替她去往敵國和親臊岸。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 45,675評論 2 359

推薦閱讀更多精彩內(nèi)容