有两个页面,分别是:FirstViewController和SecondViewController,想到达到的效果是:从第一个页面push到第二个页面,然后在第二个页面pop的时候把值传回第一个页面。
大概代码如下,FirstViewController点击按钮:
- (void)btnClick
{
SecondViewController *second = [[SecondViewController alloc] init];
[second completeBlock:^(NSString *name) {
NSLog(@"回调拿到的name = %@", name);
}];
[self.navigationController pushViewController:second animated:YES];
}
SecondViewController.h :
typedef void(^Block)(NSString *name); // 定义一个Block类型
@interface SecondViewController : UIViewController
@property (nonatomic, copy) Block block; // block属性
- (void)completeBlock:(Block)block; // block回调方法
@end
SecondViewController.m 点击按钮pop回第一个页面:
- (void)btnClick
{
// 本页面的block存在则响应第一个页面的回调
if (self.block) {
self.block(@"Jerry Yao");
}
[self.navigationController popViewControllerAnimated:YES];
}
/**
* 重写回调get方法
*
* @param block 把第一个页面实例化的block传到本页面
*/
- (void)completeBlock:(Block)block
{
_block = block;
}