美文网首页
界面传值2:block

界面传值2:block

作者: 统领三界 | 来源:发表于2016-02-04 13:03 被阅读100次

![Uploading 屏幕快照 2016-02-03 下午9.26.42_021792.png . . .]
使用导航视图控制器从后往前传值的方法里面除了代理,还可以使用block(回调函数),具体方法给如下:

首先我们打开xcode,添加两个viewcontroller,使用导航视图控制器来管理,第一页添加一个UILabel,用来显示内容,第二页添加一个UITextfield,用来输入内容,效果如下

F75C001C-7F99-4B2C-962F-2764E38AF8FF.png 屏幕快照 2016-02-03 下午9.26.42.png

其次我们要给第二个页面添加一个block的属性用来获取要传的值,并把它传递出去,block的参数就是我们在第二个页面获取的值

#import <UIKit/UIKit.h>
typedef void(^passValue)(NSString *string);
@interface SecondViewController : UIViewController
@property (nonatomic,strong)UITextField *textfield;
@property (nonatomic,strong)passValue myblock;
@end

这里我们需要注意一点的是,如果使用的ARC环境,block用strong来修饰,如果是MRC环境,block用copy来修饰.
然后我们需要在退出第二个页面的代码段里面去获取我们需要的值,通过block并把它传递出去

-(void)back:(UIBarButtonItem *)sender{
    NSString *string = self.textfield.text;
    self.myblock(string);
    [self.navigationController popToRootViewControllerAnimated:YES];
}


最后我们回到第一个页面,找到推出第二个页面的代码,去实现回调函数block方法,同时为了避免循环调用我们需要使用一个弱引用的方法( typeof (self)temp = self),并将传递过来的参数,显示在label上面.

-(void)next:(UIBarButtonItem *)sender{

    SecondViewController *secondVC = [[SecondViewController alloc]init];
    typeof (self)temp = self;
    secondVC.myblock = ^(NSString *string){
        temp.label.text = string;
    };
    [self.navigationController pushViewController:secondVC animated:YES];
}

这样的我们就实现了block传值.

补充:block的使用还有一个非常重要的场景,就是网络数据加载.以后的文章会和大家慢慢分享

相关文章

  • block基本形式

    1 创建Block 2 typedef Block 3 Block作为方法的参数 (可用于往上级界面传值)

  • 简单的block入门

    block的目的就是传值,今天写个最简单的block,希望看官看后有所启发.界面2:界面2.h 界面2.m 接下来...

  • 界面传值

    Block传值 后->前例如有2个界面:FirstViewController 和 SecondViewContr...

  • 界面传值2:block

    ![Uploading 屏幕快照 2016-02-03 下午9.26.42_021792.png . . .]使用...

  • iOS block简单用法(3)

    block用于传值 效率比代理更高 比如要把A界面的值传给B界面 (1) 定义block A界面的 .h type...

  • iOS_UI_08_界面通信

    第八章 界面通信 一、属性传值 二、协议传值 三、Block传值

  • UI总结-界面传值

    UI总结-界面传值(属性传值,协议传值,block传值,通知中指传值) 在编程过程中,界面传值是很重要的一部分,常...

  • Swift界面传值

    Swift中界面传值的方法 主要有三种 1.代理传值2.闭包传值(即OC中的Block) 属性传值 代理传值 F...

  • OC中反向传值的方法

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

  • block传值

    如果您在阅读我的文章时有疑问 , 请点击这里界面1 和 界面2 block反向传值 , 为第二界面向第一个界面传...

网友评论

      本文标题:界面传值2:block

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