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

请复制后黏贴到地址栏打开.

相关文章
相关标签/搜索