Block开发使用场景(传值)
2018-07-02 本文已影响0人
cjdale
通常我们传值分为顺传和逆传:
顺传:给需要传值的对象定义属性来传值。
逆传:代理, 通知,单例,block等。
此篇文章我们介绍Block用于逆向传值。
假设场景:由A控制器push到B控制器, B控制修改了一个字符串的值,需要传值给A控制器。
1、B控制器中定义block属性
@property (nonatomic,strong) void(^passValueBlock)(NSString *value);
2、A控制器中给B控制器block属性赋值
SecondViewController *secondVc = [[SecondViewController alloc] init];
secondVc.passValueBlock = ^(NSString *value) {
};
[self.navigationController pushViewController:secondVc animated:YES];
此处SecondViewController 就相当于B控制器
3、在B控制器需要传值的逻辑控制代码中调用block
- (void)touchesBegan:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event {
if (self.passValueBlock) {
self.passValueBlock(@"name");
}
}