①在后面控制器的 .h文件 中声明block
//一会要传的值为NSString类型
typedef void(^newBlock)(NSString*);
@interface MineViewController : RSBaseCommonViewController
//声明block属性
@property (nonatomic, copy) newBlock block;
//声明block方法
- (void)text:(newBlock)block;
@end
②在后面控制器的 .m文件 中设置block
//设置block,设置要传的值
- (void)text:(newBlock)block
{
self.block = block;
}
- (void)viewWillDisappear:(BOOL)animated
{
[super viewWillDisappear:YES];
if(self.block != nil) {
self.block(@"呵呵");
}
}
③在前面控制器的 .m文件 中接收传来的值
#import "ViewController.h"
#import "TwoViewController.h"
@interface ViewController ()
@end
@implementation ViewController
- (void)viewDidLoad {
[super viewDidLoad];
// Do any additional setup after loading the view, typically from a nib.
UIButton *button = [UIButton buttonWithType:(UIButtonTypeRoundedRect)];
button.frame = CGRectMake(0, 100, 100, 100);
button.backgroundColor= [UIColor redColor];
[button addTarget:self action:@selector(push) forControlEvents:(UIControlEventTouchUpInside)];
[self.view addSubview:button];
}
- (void)push
{
TwoViewController *newVC = [[TwoViewController alloc] init];
//接收block传来的值
newVC.block= ^(NSString*str){
NSLog(@"%@", str);
};
[self.navigationController pushViewController:newVC animated:YES];
}
@end
④最终实现效果:在控制台打印出了"呵呵"
网友评论