说明:代理传值一般在反向传值中使用。
本贴的例子是:有A和B两个界面,要实现的效果就是先让A跳转到B,然后B中有个颜色的参数,当B跳转到A时,把这个颜色的参数传递给A,在A中利用这个颜色改变自己界面的颜色。
第1步:在发送者(界面B)中,制定协议(在.h头文件中声明)
@protocol ConfigViewControllerDelegate <NSObject>
- (void)changeBgColor:(UIColor *)color;
第2步:在发送者(界面B)中的.h文件中代理协议。
@interface ConfigViewController : UIViewController
@property (nonatomic,weak) id<ConfigViewControllerDelegate> delegate;
@end
第3步:在发送者(界面B)中的方法中通知代理(最重要的步骤)
if ([self.delegate respondsToSelector:@selector(changeBgColor:)]) {
[self.delegate changeBgColor:color];
}
第4步:在接收者(界面A)中遵守协议。
@interface ViewController () <ConfigViewControllerDelegate>
第5步:在接收者(界面A)中设置自己成为代理。
ConfigViewController *testVC = [[ConfigViewController alloc] init]
testVC.delegate = self
第6步:在接受者(界面A)中实现协议中的方法。
- (void)changeBgColor:(UIColor *)color{
self.view.backgroundColor = color;
}
参考链接:http://www.jianshu.com/p/4f7b82263a56