IOS学习之——Block反向传值

在IOS中,有些情况是用代理实现反向传值的,现在介绍一种更为简单的传值方式,是Block传值方式,Block在IOS中代码有点生涩,理解起来有点困难,但是写法确实比代理方式方便太多。

下面贴上相关代码,为以后学习作为标记:

第一个页面相关代码:



//点中右上角按键
-(void)addCity:(UIBarButtonItem*)sender {
    //跳转到添加界面
    AddViewController *addVc = [[AddViewController alloc]init];
    
    //设置block属性
    //block 本身就是函数 只是是 匿名函数
    addVc.block = ^(City *city) {
        //将 新城市添加到数组中
        [self.allcities addObject:city];
        //刷新 tableview
        [self.tableView reloadData];
    };
    
    
    [self.navigationController pushViewController:addVc animated:YES];
}



第二个页面(传值的页面)相关代码:

AddViewController.h

#import <UIKit/UIKit.h>
#import "City.h"
//1.给Block类型起个别名
typedef void(^ADD_BLOCK)(City*);

@interface AddViewController : UIViewController

//2.添加Block属性  //MRC用copy ARC用strong
@property(nonatomic,strong)ADD_BLOCK block;
@end


AddViewController.m页面:

- (IBAction)addCity:(id)sender {
    City *city = [[City alloc]init];
    city.name = self.nameField.text;
    city.population = [self.populationField.text intValue];
    
    //3.适当的时候通过 block 把值传出去
    self.block(city);
    
    //把新的城市 传给代理人(前一个界面)
//    [self.delegate addCity:self inputCity:city];
    
    //委托 是传过来 一个代理对象,通过代理对象执行代理方法
    //Block 是传过来一个 一个执行方法
    
    
    //返回前一个界面
    [self.navigationController popViewControllerAnimated:YES];
}






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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值