ios block用代碼塊反向傳值最簡單

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

新建一個 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




發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章