您的位置:首页 > 移动开发 > IOS开发

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

2014-07-05 09:44 417 查看
先来复习下如何定义一个block

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

};

例如:

[objc] view
plaincopy





// block的写法

//定义block

void (^block)(int) = ^(int a){

NSLog(@"%d", a);

};

如何使用block:

block名(参数);

例如:

[objc] view
plaincopy





// block的写法

//定义block

void (^block)(int) = ^(int a){

NSLog(@"%d", a);

};

// block的使用(执行block中的代码)

block(10);

// 可以给同类型的block类型赋值

void (^block1)(int) = block;

函数中参数为block类型

[objc] view
plaincopy





- (void)textBlock:( void (^)(int) )block

{

block(3);

}

调用含有block类型的参数的方法

[objc] view
plaincopy





[self textBlock:block];

临时定义一个block参数

[objc] view
plaincopy





[self textBlock:^(int a) {

NSLog(@"%d", a);

}];

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

[objc] view
plaincopy





// 把void(^)(int) 类型重定义为BLOCK

typedef void(^BLOCK)(int);

[objc] view
plaincopy





// 利用新定义的BLOCK变量 定义

BLOCK b = ^(int a ){

NSLog(@"%d", a);

};

现在来讲如何利用block传值

第一步:

[objc] view
plaincopy





// 在第一个页面中定义一个block 确定需要进行的操作

void (^changeColorBlock)(UIColor *color) = ^(UIColor *color) {

// 改变颜色

[self.view setBackgroundColor:color];

};

第二步:

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

[objc] view
plaincopy





// 重定义一个Block类型

typedef void(^BL)(UIColor *color);

//定义一个block属性 一定要用copy属性

@property (nonatomic, copy) BL block;

第三步:

给第二个页面的block赋值

[objc] view
plaincopy





secondVC.block = changeColorBlock;

第四步:

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

[objc] view
plaincopy





- (void) btnClick:(UIButton *)btn

{

self.block([UIColor orangeColor]);

[self.navigationController popViewControllerAnimated:YES];

}

内存管理:

[objc] view
plaincopy





-(void)dealloc

{

Block_release(_block);

[super dealloc];

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: