ios 頁面傳值4種方式(四) 之經過delegate(代理)

這是ios裏最經常使用的設計模式了,簡直貫穿了整個cocoa touch框架.廢話很少說,直接上代碼:ios

場景是:設計模式

A--打開--B;框架

B裏輸入數值,點擊--返回--A;atom

A裏顯示B輸入的值;spa

△在開始寫以前得理清楚如下幾個關係:設計

1:代理要作什麼:代理

   代理要修改A的值;blog

2:誰須要委託:源碼

    換句話說就是誰要作什麼而不能作.it

    咱們的需求是須要B返回A的時候把輸入的值傳遞給A, 那麼就是B須要委託,要傳遞數值給A,在A的label裏顯示這個數值,而它沒辦法去完成的; 

3:誰經過代理去作:

  B須要經過代理去修改A裏Label的值.

4:誰委託誰去作

    B委託A去修改值;

 

理清這幾個關係後,咱們的代碼就能夠按照這個套路去編寫了:

一:代理要作什麼

B.h

聲明一個協議,這個代理要作的是修改Label的值;

@protocol BDelegate
<NSObject> - (void)changeLabelText: (NSString *)text; @end

 

二: 誰須要代理: 

B須要一個代理

B.h

@property (nonatomic, assign) id<BDelegate> delegate;

 三:誰經過代理去作

B.m

[self.delegate changeLabelText: textField.text];

 四:作什麼

A.h里加入協議

@interface A : UIViewController <BDelegate>

 

A.m裏定義代理

    B *B = [[B alloc]init];
    B.delegate = self;//B的委託A去作(self即A)

 A.m實現這個協議方法

- (void)changeLabelText:(NSString *)text{
    self.label.text = text;//修改label的text值 text即在B裏修改的值
}

 

That's all.

 源碼下載:http://vdisk.weibo.com/s/yV3nUa6epUv7x

請複製後黏貼到地址欄打開.

相關文章
相關標籤/搜索