UI11_Block传值

来源:互联网 发布:人性实验室 网络暴力 编辑:程序博客网 时间:2024/06/06 14:22
目的:前后传值.我们在两个视图控制器中创建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);}
0 0
原创粉丝点击