您的位置:首页 > 移动开发 > IOS开发

iOS block在不同界面的回调传值

2016-01-23 18:00 417 查看
一、二级界面向一级界面的回调传值

首先,在二级界面的.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

备注:欢迎指正!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: