①在后面控制器的 .h文件 中声明block
//一会要传的值为NSString类型
typedefvoid(^newBlock)(NSString*);
@interfaceNewViewController :UIViewController
//声明block属性
@property(nonatomic,copy)newBlockblock;
//声明block方法
- (void)text:(newBlock)block;
@end
②在后面控制器的 .m文件 中设置block
//设置block,设置要传的值
- (void)text:(newBlock)block
{
self.block= block;
}
- (void)viewWillDisappear:(BOOL)animated
{
[superviewWillDisappear:YES];
if(self.block!=nil) {
self.block(@"呵呵");
}
}
③在前面控制器的 .m文件 中接收传来的值
#import"ViewController.h"
#import"NewViewController.h"
@interfaceViewController()
@end
@implementationViewController
- (void)viewDidLoad {
[superviewDidLoad];
UIButton*button = [UIButtonbuttonWithType:(UIButtonTypeRoundedRect)];
button.frame=CGRectMake(0,100,100,100);
button.backgroundColor= [UIColorredColor];
[buttonaddTarget:selfaction:@selector(push)forControlEvents:(UIControlEventTouchUpInside)];
[self.viewaddSubview:button];
}
- (void)push
{
NewViewController*newVC = [[NewViewControlleralloc]init];
//接收block传来的值
newVC.block= ^(NSString*str){
NSLog(@"%@", str);
};
[self.navigationControllerpushViewController:newVCanimated:YES];
}
- (void)didReceiveMemoryWarning {
[superdidReceiveMemoryWarning];
// Dispose of any resources that can be recreated.
}
@end
④最终实现效果:在控制台打印出了"呵呵"
到此,block完成传值
网友评论