[ 登录注册 ]

博客

iOS 中delegate的理解与使用(传值)

2017-07-14 10:47:35 admin 返回上一页

标签:设置   代理模式   hub   style   之间   变量   http   field   不能   

之前做了半年的iOS,刚入了门,又被拉去转战java,现在iOS的那位大佬离职了,又被弄过来维护app,之前对于iOS中的delegate一直都是半知半解,所以刚好趁着这个机会把我所了解的记下来,以便日后查阅。

- delegate的理解

delegate 也就是代理模式(设计模式的一种),我现在所了解的代理模式是,当我有事要做但是没空的时候,我就可以请别人帮下忙,我告诉你我要做什么,但是具体怎么做,那是你的事了,就比如说,我想去个妹纸出来玩,但是自己刚好现在有事不能,或者自己不好意思,这时候可以请朋友帮忙一下,这时朋友就是你的代理(被委托者)了,你就是委托者,你告诉他你的目的是要妹纸出来玩,妹纸出来玩也就是你和他之间的协议,至于他怎么把妹纸出来,你是不用关心的。

 

delegate最常用的地方就是逆向传值了(正向传值直接用属性传值就行了)

一般的委托者需要做的事:

      1、创建协议(也就是代理要实现的方法)

      2、声明委托变量

      3、设置代理(也可以在代理中设置)

      4、利用委托变量来调用协议方法(也就是让代理者开始执行协议)

代理需要做的事:

      1、遵循协议

      2、实现协议方法

这里有两个页面VCA、VCB,我先从VCA Push到VCB,在VCB的一个textfield中输入我想要传的值,等点击按钮POP回到VCA的时候,把VCB中textfield中的值展示到VCA的label中,这时候VCB就是委托者,VCA就是代理,代码如下:

1、创建协议

//在VCB中创建协议//ViewControllerB.h//创建协议@protocol VcBDelegate <NSObject>- (void)sendValue:(NSString *)value; //声明协议方法@end

2、声明委托变量

//ViewControllerB.h@interface ViewControllerB : UIViewController@property (nonatomic weak)id<VcBDelegate> delegate; //声明协议变量@end

3、设置代理 (我是在VCA按钮跳转的时候设置的代理,所以是在VCA.m中设置的)

//ViewControllerA.m- (void)btnClicked{ViewControllerB *vcB = [ViewControllerB new];vcB.delegate = self;[self.navigationController pushViewController:vcB animated:YES];}

4、利用委托变量来调用协议方法(也就是让代理者开始执行协议)

- (void)backActionClicked{//当代理响应sendValue方法时,把_tx.text中的值传到VCAif ([_delegate respondsToSelector:@selector(sendValue:)]) {[_delegate sendValue:_tx.text];[self.navigationController popViewControllerAnimated:YES];}}

5、在代理(ViewControllerA)中遵循协议

//viewControllerA.m@interface ViewControllerA ()<VcBDelegate>//遵循协议@property (nonatomic strong) UILabel *recievedLB;@end

6、代理实现协议方法

//ViewControllerA.m//实现协议方法,把接收到的值展示到Label中- (void)sendValue:(NSString *)value{_recievedLB.text = value;}

这样就OK了。

附上模拟器的效果图:

技术分享

技术分享

技术分享

最后附上demo的git地址:https://github.com/fenglee594/delegateDemo

不喜勿喷,欢迎讨论。

iOS 中delegate的理解与使用(传值)

标签:设置   代理模式   hub   style   之间   变量   http   field   不能   


文章来源:http://www.bozhiyue.com/anroid/boke/2017/0714/1484319.html
返回上一页    返回分类 上一篇:   下一篇:
相关