新建一個工程,需要之前的代理什麼的,太麻煩了,通通不要。我們就要最簡單的,最實用的。我們來學習下代碼塊的用法。
新建一個 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