新建一个工程,需要之前的代理什么的,太麻烦了,通通不要。我们就要最简单的,最实用的。我们来学习下代码块的用法。
新建一个 FirstViewController ,在FirstViewController.h里面添加一个方法
如下图
然后把2个页面的跳转什么的写好。
老样子先写第一个
#import "ViewController.h"
#import "FirstViewController.h"
@interface ViewController ()
@end
@implementation ViewController
- (void)viewDidLoad {
[super viewDidLoad];
self.view.backgroundColor = [UIColor blueColor];
[self createButton];
}
-(void)createButton
{
UIButton *btn = [UIButton buttonWithType:UIButtonTypeSystem];
btn.frame = CGRectMake(30, 50, 300, 40);
[btn setTitle:@"下一页" forState:UIControlStateNormal];
btn.titleLabel.font = [UIFont systemFontOfSize:24];
[btn addTarget:self action:@selector(btnClick) forControlEvents:UIControlEventTouchUpInside];
[self.view addSubview:btn];
}
-(void)btnClick
{
FirstViewController *firstVC = [[FirstViewController alloc]init];
//创建block变量,把更改的数据赋给它,然后更改背景颜色(是不是很简洁?比之前的简单太多了,大脑不在短路了,直接在 FirstViewController .h里面调用就行。因为在 FirstViewController .m里面已经把颜色修改好了,而第一个页面是调用了 FirstViewController .h的方法,之间建一个block变量,把更改的颜色赋给变量,更改背景颜色)
firstVC.block = ^(UIColor *color)
{
self.view.backgroundColor = color;
};
[self presentViewController:firstVC animated:YES completion:^{
NSLog(@"firstVC已经被移除");
}];
}
@end
//然后再写第二个页面
#import "FirstViewController.h"
@interface FirstViewController ()
@end
@implementation FirstViewController
- (void)viewDidLoad {
[super viewDidLoad];
self.view.backgroundColor = [UIColor brownColor];
[self createButton];
}
-(void)createButton
{
UIButton *btn = [UIButton buttonWithType:UIButtonTypeSystem];
btn.frame = CGRectMake(30, 150, 300, 40);
[btn setTitle:@"返回" forState:UIControlStateNormal];
[btn addTarget:self action:@selector(btnClick) forControlEvents:UIControlEventTouchUpInside];
[self.view addSubview:btn];
}
-(void)btnClick
{
//调用代码块修改上一个视图的颜色
self.block([UIColor cyanColor]);//只需这么一句代码就完成任务了
[self dismissViewControllerAnimated:YES completion:nil];
}
@end