iOS如何实现传值---block传值

先来复习下如何定义一个block

返回值 (^block名)(参数列表) = ^(参数列表){


};

例如:

    // block的写法
    //定义block
    void (^block)(int) = ^(int a){
        NSLog(@"%d", a);
    };

如何使用block:

block名(参数);

例如:

    // block的写法
    //定义block
    void (^block)(int) = ^(int a){
        NSLog(@"%d", a);
    };
    // block的使用(执行block中的代码)
    block(10);
    // 可以给同类型的block类型赋值
    void (^block1)(int) = block;
函数中参数为block类型
- (void)textBlock:( void (^)(int) )block
{
    block(3);
}
调用含有block类型的参数的方法

    [self textBlock:block];

临时定义一个block参数

    [self textBlock:^(int a) {
        NSLog(@"%d", a);
    }];

使用重定义快速定义一个block

// 把void(^)(int) 类型重定义为BLOCK
typedef void(^BLOCK)(int);
    // 利用新定义的BLOCK变量 定义
    BLOCK b = ^(int a ){
        NSLog(@"%d", a);
    };



现在来讲如何利用block传值

第一步:

    // 在第一个页面中定义一个block 确定需要进行的操作
    void (^changeColorBlock)(UIColor *color) = ^(UIColor *color) {
        // 改变颜色
        [self.view setBackgroundColor:color];
    };

第二步:

在第二个页面类中声明一个属性

// 重定义一个Block类型
typedef void(^BL)(UIColor *color);

//定义一个block属性 一定要用copy属性
@property (nonatomic, copy) BL block;

第三步:

给第二个页面的block赋值

secondVC.block = changeColorBlock;

第四步:

在第二个界面中比如说按了一个按钮,把值传回到第一个界面类中

- (void) btnClick:(UIButton *)btn
{
    self.block([UIColor orangeColor]);
    [self.navigationController popViewControllerAnimated:YES]; 
}


内存管理:

-(void)dealloc
{
    Block_release(_block);
    [super dealloc];
}







评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值