//协议代理的反向传值的实现:
假如:vc2要向vc1传入一个值,也就是所谓的反向传值。
因为vc2自己没有能力去传值,所以呢vc2需要找个可以传值的代理来帮他做这件事,所以vc2得制定一个协议(要求代理有这个能力做这件事)
1.1在vc2.h中
制定协议:@protocol 协议名称 <NSObject>
制定协议后需要列出要做的事
协议内容:-(void)事情的名称:(传值的类型)变量名;
再制定一个代理属性:
@propery(nonatomic,…..)id<协议名称>delegate;
2.在vc1.h中
因为vc1有能力做vc2的代理,所以他肯定有做事情的方法的实现
首先需要让vc1遵守vc2的协议
声明 vc2.delegate=self(也就是自己)
在vc1.m中实现这个方法,实现方法的同时也就把vc2中的值当做形参传入vc1中。
3.当vc2.m中去用他得代理去做这件事时,传入一个形参,就可以将vc2中的这个形参用他的代理就可以传到vc1中
实现:if ([self.delegaterespondsToSelector:@selector(事情的名称:(传值的类型)变量名)]) {
[self.delegate事情的名称:传的值];
}