iOS block的使用

明明知道block是一个很重要的知识点,很久不用就又忘了,这是在网上看到的一个例子。(晚上回去整理另外的一个)

在视图A上有一个按钮(用来在点击的时候推出视图b)和一个label(用来显示从b传回来的值),在界面b上有一个文本输入框,用来输入想要传给a的文本。

具体实现的流程是:

1 在b.h中,为要声明的block重新定义一个名字ReturnTextBlock

typedef void (^ReturnTextBlock)(NSString *text);//这是定义block的格式,(^ReturnTextBlock)里是block的名字,以^作为标志。(NSString *text)是传入的参数.然后定义一个block属性,@property(nonatomic,copy)ReturnTextBlock returnTextBlock;//用来保存传进来的block语句。然后寻找一个合适的时机调用.

-(void)returnText:(ReturnTextBlock) block;//是一个在第一个界面传进来一个Block语句块的函数,

 在b.m中,实现方法与找到合适的时机来调用你传进来的block

-(void)returnText:(ReturnTextBlock)block{2⃣️

      self.returnTextBlock = block;//把传进来的Block语句块保存到本类的实例变量returnTextBlock(.h中定义的属性)中,然后寻找一个时机调用

}

-(void)viewWillDisappear:(BOOL)animated{3⃣️

    if (self.returnTextBlock != nil) {

    self.returnTextBlock(self.textField.text);4⃣️

    }

}

2、在a.m中

-(void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender{1⃣️

    BViewController *bvc = segue.destinationViewController;

    [bvc returnText:^(NSString *text) {2⃣️4⃣️

            self.textLabel.text = text;

    }];

}

posted @ 2015-09-18 15:47  脱贫致富,多喝热水  阅读(125)  评论(0编辑  收藏  举报