iOS Block界面反往传值

 

于上篇博客 《iOS
Block简介》 中,侧重分析了 iOS
Block的定义相当,本文将注重于它们在开被之以。

Block是iOS4.0+ 和Mac OS X 10.6+
引进的对C语言的扩充,用来落实匿名函数的表征。
为此维基百科的讲话来说,Block是Apple
Inc.为C、C++以及Objective-C添加的特征,使得这些语言可以为此接近lambda表达式的语法来创造闭包。关于闭包,一词话讲简洁明了:闭包就是会读取其它函数内部变量的函数。

当iOS开发被,Block有许多方面的用,界面反朝传值就是中之一。

设若我们来一个需如下:界面A上面来一个button、一个label。从界面A跳反到界面B,在界面B的输入框中输入字符串,在界面A的label上显得。这是一个超人的反向传值的例证。这个事例的中坚是:“在界面B的输入框中输入字符串,在界面A的label上展示”。Block实现反往传值。

 

1、在第二只视图控制器的.h文件中定义声明Block属性:

//定义block
@property (nonatomic,copy) void (^NextViewControllerBlock)(NSString *tfText);

 

@interface NextViewController ()

@property (weak, nonatomic) IBOutlet UITextField *inputTF;

@end


- (IBAction)BtnAction:(id)sender {

    //判断block是否为空
    if (self.NextViewControllerBlock) {
        self.NextViewControllerBlock(self.inputTF.text);

    }

    [self.navigationController popViewControllerAnimated:YES];
}

 

 

2、在第一单视图中拿走第二独视图控制器,并且用第二单视图控制器来调用定义之习性:

@interface AViewController ()
@property (weak, nonatomic) IBOutlet UILabel *nextVCInfoLabel;

@end

 

- (IBAction)btnClicked:(id)sender {

    NextViewController *nextVC = [[NextViewController alloc]init];
    nextVC.NextViewControllerBlock = ^(NSString *tfText){
        self.nextVCInfoLabel.text = tfText;
    };

    [self.navigationController pushViewController:nextVC animated:YES];
}

 

 

 效果使图:

 

 

由于本文用的是XIB,省略了一部分UI细节,附上本文的代码链接:源码。

岂写的糟糕,望评论指。谢过~