iOS block在不同界面的回调传值

一、二级界面向一级界面的回调传值

首先,在二级界面的.h文件定义一个block的属性,方便传值

/**
 *  将block定义为属性
 */

@property(nonatomic,copy)void(^returnString)(NSString * str);

然后在一级界面的.m文件调用

-(void)btnclicked{
    
    secondViewController * second = [[secondViewController alloc] init];
    
    second.returnString = ^(NSString * str){
        NSLog(@"我是第一个界面的回调---%@",str);
    };
    
    [self.navigationController pushViewController:second animated:YES];
    
}
最后在二级界面的.m界面实现回调

-(void)btnclicked{
    
    if (self.returnString) {
        self.returnString(@"第二个界面穿过来的值");
    }
    
    [self.navigationController popViewControllerAnimated:YES];
}

回调结果如下


二、三级界面向一级界面传值

首先在二级界面和三级界面的.h文件中定义一个block的属性

/**
 *  将block定义为属性
 */

@property(nonatomic,copy)void(^returnString)(NSString * str);

然后在二级界面跳转到三级界面的方法中这样传值

-(void)nextBtnclicked{
    
    thirdViewController * third = [[thirdViewController alloc] init];
    third.returnString = self.returnString;
    
    third.returnString = ^(NSString * str){
        
        NSLog(@"我是第二个界面的回调---%@",str);
        
        /**
         *  此处是实现值的连续传递 如果不实现的话当前控制不能将值传递给上一个界面
         */
        
        self.returnString(str);
        
    };
    
    [self.navigationController pushViewController:third animated:YES];

}

最后回到的结果如下


下面是我自己写的一个小demo可以供大家参考一下 

https://github.com/fuzongjian/FZJBlock.git

备注:欢迎指正!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值