iOS,Block传值

iOS页面之间传值,通常采取四种方式:属性、通知、代理和Block回调传值这四种方式。 

今天在这里,我们详细讲解Block回调传值这种方式。

一、Block回调传值通常用于两个页面之间的反向传值。如下所示,图一所示第一个视图控制器需要接收来自第二个视图控制器的值(图2 为第二个界面),即反向传值,在这里我们用Block回调实现。

iOS,Block传值_第1张图片

                              图1    第一个视图控制器

iOS,Block传值_第2张图片

                               图2   第二个视图控制器

iOS,Block传值_第3张图片

   图3  第一个视图控制器接收到第二个视图控制器回传的值

二、具体实现步骤

第一个视图控制器:ViewController

第二个视图控制器:CustomViewController

(一)  首先,在第二个视图控制器CustomViewController.h中声明Block属性,该Block有参数,无返回值。如下图所示。

iOS,Block传值_第4张图片

第二行代码,为整个Block函数定义了一个新名字ReturnTextBlock,方便后面的使用

第六行代码,定义一个Block属性

(二)其次,第一个视图控制器ViewController.m文件中,获得第二个视图控制器的对象cvc,而该cvc对象拥有之前定义的Block属性(ReturnTextBlock block),在此处编写该Block的实现,cvc.block  =  ^ ( NSString*  text )  { _label.text = text ; };     如下图所示。

iOS,Block传值_第5张图片

注意:此处只是该Block方法的定义,当用户点击“到第二个界面”按钮时,该Block内部的代码_label.text = text ;并不会执行,只有该Block被调用时(需要传值时,就会调用该Block。在此案例中,该Block的调用在第二个视图控制中),才会执行该Block内部的代码。

(三)最后,在第二个视图控制器CustomViewController.m文件中调用Block传值。该语句_block(_textField.text);就是调用Block。运行这条语句就是去执行第一个视图控制器ViewController.m文件中^ ( NSString*  text )  { _label.text = text ; };代码(因为这是该Block的实现),从而将值回传到第一个界面。

iOS,Block传值_第6张图片

三、以上就是Block传值的三个步骤,声明、定义、调用。一定要记住,定义只有被调用时才会被执行!!!

你可能感兴趣的:(iOS,Block传值)