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

UI11_Block传值

2015-08-13 20:42 405 查看
目的:前后传值.我们在两个视图控制器中创建UIButton(点击进去下一页,和返回上一个页面)进行传值


从后往前传值

现象:后面控制前面的背景颜色.block没有返回值没有参数
第一个页面的点击方法中
-(void)click:(UIButton *)button
{
//没有参数没有返回值的block
//通过block改变self.view的背景颜色
void(^block)()=^()
{
self.view.backgroundColor=[UIColor colorWithRed:arc4random()%265/250.0 green:arc4random()%265/250.0 blue:arc4random()%265/250.0 alpha:1];
}
//调用
block();

// 定义第二个界面的视图控制器的对象
SecondViewController *second=[[SecondViewController alloc]init];
//正题-传值步骤2
//此地方传的是变量  将block变量传到第二页
second.block=block;
[self.navigationController pushViewController:second animated:YES];
}


第二个页面
传值步骤1
//在.h文件写一条属性,负责接收第一页想第二页传递过来的block
@property(nonatomic, copy)void(^block)();

传值步骤3
在.m文件中的Button点击方法中
-(void)click:(UIButton *)button
{
//3.调用传过来的block
//后面是使用block方法
//    self.block();
}


传数组

block传值不需要返回值,因为调用更需要返回值,所以传值的时候只要参数不需要返回值
等号前面是参数的类型,等号后面是形参列表
传过来的数据在block中进行


Button的点击方法中
void(^block)(NSMutableArray *)=^(NSMutableArray *arr)
{
NSLog(@"%@",arr);
};
SecondViewController *second=[[SecondViewController alloc]init];
[self.navigationController pushViewController:second animated:YES];
second.blockOne=block;
[second release];

在SecondViewController.h中
定义属性
@property(nonatomic,copy)void(^blockOne)(NSMutableArray *);
在.m文件中
定义个数组arr(在扩展里定义的)
Button点击中方法中
-(void)click:(UIButton *)button
{
[self.navigationController popToRootViewControllerAnimated:YES];
self.blockOne(self.arr);
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: