iOS页面传值之Block传值

场景A控制器中有一个Label  B控制器中有一个文本输入框textField

A push 到B 当,B返回A时,我们让B中文本框的内容展示到A中去

 

第一步:

  在B中定义Block

#import <UIKit/UIKit.h>

typedef void(^PassValueOption)(NSString*);

@interface ZPViewControllerB : UIViewController

@property(nonatomic,copy)PassValueOption option;

@end

 

第二步:

  在A 准备向B push之前

  ZPViewControllerB* Vc=[[ZPViewControllerB alloc]init];//初始化一个B控制器

  //为B控制器Vc 的option 这个Block赋值

  //当然,我们先要取得self

    __weak typeof(self) weakSelf=self;

      Vc.option=^(NSString* str){

          weakSelf.textLabel.text=str;//意思是当你想调用这个block的时候只要传一个NSString进来,就会改变textLabel的文字

      };

第三步:  当B控制器要返回A的时候,可以在pop中写  也可以在viewWilldisAppear中写

  //执行self.option 这个块代码

  

  self.option(self.textField.text);

 

至此,返回A控制器的时候,你会发现Label的文字已经改变

posted @ 2014-11-27 16:30  Shdow_Walker  阅读(238)  评论(0编辑  收藏  举报