假如我们有一个需求如下:界面A上面有一个button、一个label。从界面A跳转到界面B,在界面B的输入框中输入字符串,在界面A的label上显示。这是一个典型的反向传值的例子。这个例子的核心是:“在界面B的输入框中输入字符串,在界面A的label上显示”。Block实现反向传值。
1、在第二个视图控制器的.h文件中定义声明Block属性:
//定义block
@property (nonatomic,copy) void (^NextViewControllerBlock)(NSString *tfText);
1、在第二个视图控制器的.h文件中定义声明Block属性:
//定义block
@property (nonatomic,copy) void (^NextViewControllerBlock)(NSString *tfText);
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];
}
网友评论