一、二级界面向一级界面的回调传值
首先,在二级界面的.h文件定义一个block的属性,方便传值
/**
* 将block定义为属性
*/
@property(nonatomic,copy)void(^returnString)(NSString * str);
然后在一级界面的.m文件调用
-(void)btnclicked{
secondViewController * second = [[secondViewController alloc] init];
second.returnString = ^(NSString * str){
NSLog(@"我是第一个界面的回调---%@",str);
};
[self.navigationController pushViewController:second animated:YES];
}
最后在二级界面的.m界面实现回调
-(void)btnclicked{
if (self.returnString) {
self.returnString(@"第二个界面穿过来的值");
}
[self.navigationController popViewControllerAnimated:YES];
}
回调结果如下
二、三级界面向一级界面传值
首先在二级界面和三级界面的.h文件中定义一个block的属性
/**
* 将block定义为属性
*/
@property(nonatomic,copy)void(^returnString)(NSString * str);
然后在二级界面跳转到三级界面的方法中这样传值
-(void)nextBtnclicked{
thirdViewController * third = [[thirdViewController alloc] init];
third.returnString = self.returnString;
third.returnString = ^(NSString * str){
NSLog(@"我是第二个界面的回调---%@",str);
/**
* 此处是实现值的连续传递 如果不实现的话当前控制不能将值传递给上一个界面
*/
self.returnString(str);
};
[self.navigationController pushViewController:third animated:YES];
}
最后回到的结果如下
下面是我自己写的一个小demo可以供大家参考一下
https://github.com/fuzongjian/FZJBlock.git
备注:欢迎指正!