美文网首页
iOS传值-反向传值-使用block(代码块)

iOS传值-反向传值-使用block(代码块)

作者: 夜羚 | 来源:发表于2017-11-19 14:07 被阅读9次

代码块:是一种OC的一种数据类型,在iOS4时被引入,具有匿名函数的特性。它可以保存一段代码,并在合适的时候取出来调用。

场景:  FirstViewController 跳转到SecondViewController, 然后又跳转回 FirstViewController,并带回SecondViewController中的数据.

步骤一:在SecondViewController.h文件中定义一个block

typedef void (^SecondBlock)(NSString*text);

步骤二:同样在SecondViewController.h声明一个SecondBlock的实例变量

@property (nonatomic, copy) SecondBlock secondBlock;

//注:因为block一开始是放在栈上的,使用copy修饰目的是防止在创建block时候的作用域外面调用block 而导致程序崩溃。同时为了能够在block的声明域外使用,所以才会要把block拷贝(copy)到堆。

步骤三:当SecondViewController要消失前,检查一下secondBlock是否在作用域外部被引用。如果是,发送数据。

if (self.secondBlock) {

    self.secondBlock(_text.text);

}

以上工作做好之后,接下来就是调用。

当FirstViewController进入SecondViewController之前,调用secondBlock等待回调

__weak typeof(self) weakSelf = self;

SecondViewController* second = [[SecondViewController alloc]init];

second.secondBlock = ^(NSString* text) {

weakSelf.showLabel.text = text;

};

效果如下:

相关文章

  • iOS传值-反向传值-使用block(代码块)

    代码块:是一种OC的一种数据类型,在iOS4时被引入,具有匿名函数的特性。它可以保存一段代码,并在合适的时候取出来...

  • ioS 页面(代理、通知、block、单例、属性)传值

    iOS 页面(代理、通知、block、单例、属性)传值 一、传值分类 页面传值基本分为两种:正向传值和反向传值。 ...

  • iOS 页面(代理、通知、block、单例、属性)传值

    iOS 页面(代理、通知、block、单例、属性)传值 一、传值分类 页面传值基本分为两种:正向传值和反向传值。 ...

  • iOS 常用传值方式

    总结 iOS 日常开发中的几种常用传值方式:正向传值代理传值block传值通知传值单例 文章代码:https://...

  • 多线程2

    Block基本演练 block反向传值 主界面 准备等待执行的代码块 如果需要接收外界传入的值,需要定义参数 向目...

  • OC中反向传值的方法

    oc中反向传值四种方法 block反向传值 在需要传值的界面: 在接受到传值的界面 单例反向传值 创建一个单例类 ...

  • 【iOS开发细节】之- delegate代理的使用

    在iOS开发中、好多时候需要涉及到页面传值、而传值又分为正向传值和反向传值 一、 传值 1、正向传值 2、反向传值...

  • iOS_四大传值

    一、目录 属性 传值 单例 传值 block传值 代理 传值 总结 个人使用心得 代码下载地址:https://g...

  • Block传值

    iOS传值一共有四种:属性传值,代理传值,通知传值以及Block传值; 今天我们来说一下Block传值: 概念:带...

  • iOS开发-block传值

    block传值步骤比代理传值步骤简便,实际开发中经常使用到。 block传值分为block属性传值和block方法...

网友评论

      本文标题:iOS传值-反向传值-使用block(代码块)

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