美文网首页
iOS,Block传值

iOS,Block传值

作者: 56594812a596 | 来源:发表于2016-12-30 10:42 被阅读0次

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

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

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

                                  图1    第一个视图控制器

                                   图2   第二个视图控制器

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

    二、具体实现步骤

    第一个视图控制器:ViewController

    第二个视图控制器:CustomViewController

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

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

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

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

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

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

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

    相关文章

      网友评论

          本文标题:iOS,Block传值

          本文链接:https://www.haomeiwen.com/subject/qdfmvttx.html