美文网首页
Block的基本使用方法(两个界面间的传值)

Block的基本使用方法(两个界面间的传值)

作者: 天亮前被寻找的一只猫 | 来源:发表于2016-11-11 15:52 被阅读46次

    很多人都被block给绕晕了. 我来简单明了的说下bLock的基本用法

    1. 谁需要传值  谁定义block  ---->定义

    2.谁需要用值  谁调用block ---->调用

     与其每次用block的时候 痛苦的纠结着格式问题,不如将一个标准的格式保存下来 ,等到用的时候 赋值 粘贴 改参数名 OK 搞定,绝对不会出错 !!  当然 希望大家先了解其原理,然后再去使用.   还清楚的记得一年前面试的时候让我手写block, 我说我不会, 然后让我说谁传值,谁调用.........我更是一脸懵逼......还是因为对基本原理及用法都搞不懂..每次用的时候就去百度..用完也不去了解....那样就不算去掌握它...现在想想 还觉得搞笑 哈哈.

    1. 谁需要传值  谁定义block  ---->定义

      在.h文件中: 

    -----------------------------------------

      typedefvoid(^workBlock)(NSString*);     //宏定义   类似于给一个Block 起别名.

    @property(nonatomic,strong)workBlock   block;    //创建一个Block属性

    - (void)returnText:(workBlock)block;      //创建一个含有block的方法参数   (在第另一个界面中调用次方法 ,才获取执行block的赋值操作:block不调动的时候 就不会执行 )

    在.m文件中:

    ---------------------------------------

    - (void)returnText:(workBlock)block {        //实现.h中定义的方法    

                          self.block = block;

    }

      传值:     然后在需要传值的地方 调用Block 进行赋值:(入在某个数据源方法中拿到了值  :比如点击了某行的cell )

    UITableViewCell *cell=[tableView cellForRowAtIndexPath:indexPath];  //获取当前点击的cell

    NSString *right=cell.textLabel.text;

    if (self.block!= nil) {          (block不调用的时候 不执行)     所以避免了每次运行代码时 都进行的赋值操作           

               self.block(right);

    }

    2.谁需要用值  谁调用block ---->调用

    ------------------------------------------

    在需要用到值得地方 调用Block

    CategoryController*catagoryPop=[CategoryControlleritem];

    [catagoryPop returnText:^(NSString*showText) {   

    //在这里面取值self.showLabel.text = showText;  }

    ];

    相关文章

      网友评论

          本文标题:Block的基本使用方法(两个界面间的传值)

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