续上一篇block代码块基础使用(一)
ViewController
- (IBAction)gotoNextVC:(UIButton *)sender
{
SecondVC *vc = [[SecondVC alloc]init];
//把改变自身背景颜色的代码写入一个block中,将这个block传值传给第二个界面,这样第二个界面就可以通过调用这个block改变第一个界面的颜色。
vc.changeColorBlock = ^(UIColor *color)
{
self.view.backgroundColor = color;
};
[self.navigationController pushViewController:vc animated:YES];
}
//block的property必须使用copy
@property (nonatomic,copy)void (^changeColorBlock)(UIColor *);
- (IBAction)changeColor:(UIButton *)sender
{
UIColor *color = nil;
switch (sender.tag)
{
case 1:
color = [UIColor redColor];
break;
case 2:
color = [UIColor greenColor];
break;
case 3:
color = [UIColor blueColor];
break;
default:
break;
}
//调用block
if (_changeColorBlock)
{
//如果block变量值为空,那么调用block就会崩溃,调用之前最好先判断block是否为空。
_changeColorBlock(color);
}
[self.navigationController popViewControllerAnimated:YES];
}