您的位置:首页 > 产品设计 > UI/UE

UI11_Block传值

2015-08-12 21:03 543 查看
对 void(^)(NSString *) 类型block进行typedef

//  进行typedef
typedef void(^Block)(NSString *);
//  写一条属性
@property(nonatomic, copy)Block block;


Block 从后向前传值

block传值不需要返回值, 因为调用更需要返回值, 所以传值的时候只要参数, 不需要返回值

将SecondViewController里的值添加到MainViewControlle的数组里

主要代码如下 :

SecondViewController.h 文件

// 1.写一条同第一个界面相同类型的block
#import <UIKit/UIKit.h>
typedef void(^Block)(NSString *);
@interface SeconViewController : UIViewController
@property(nonatomic, copy)Block block;
@end

//****注意: 不要忘记在实现文件里对block进行释放*****
- (void)dealloc{
Block_release(_block);  // block自己的release方法

}


MainViewController.h 文件

// 2.通过第二页属性, 接收本页block
//①先在有第二页对象的方法里写一个block,为传值做准备
void (^block)(NSString *) = ^(NSString *str){
NSLog(@"%@", str);

[self.arr addObject:str];  // 处理数据在block中(将第二页传来的值加到数组中)

};
//②用第二页的属性接收本页的block
secVC.block = block;

----------

// ③刷新tableView
UITableView *tView = (UITableView *) [self.view viewWithTag:1000];
[tView reloadData];


// 3.在第二个文件的实现文件中进行传值操作: (SecondViewController.m 文件)
self.block(@"hehe");


~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

练习:

准备工作 : 在第一个界面铺一个导航视图控制器和”下一页”按钮 , 在第二个界面写一个 “返回”的按钮, 点击返回到第一个页面, 并随机更换第一个页面的背景颜色

主要代码如下:

在第一个页面的”下一页”按钮的方法里写一个block , 实现随机更换背景的功能

-(void)click:(UIButton *)button{

//  没有参数, 没有返回值的block
//  通过block, 改变self.view的背景颜色
void (^block)() = ^(){
self.view.backgroundColor = [UIColor colorWithRed:arc4random() % 256 / 255.0 green:arc4random() % 256 /255.0 blue:arc4random() %256 / 255.0 alpha:1];
};

//  2.通过第二页属性 接收block
secVC.block = block;

[self.navigationController pushViewController:secVC animated:YES];
[secVC release];

}


第二个界面的接口文件里, 写一条同类型的block属性

// 1.写一条属性, 负责接收第一页向第二页传递过来的block
@property(nonatomic, copy)void(^block)()


第二个界面的实现文件里 , 调用传过来的block

-(void)click:(UIButton *)button{

3.调用传过来的block
self.block();

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