美文网首页
Block数组作为参数

Block数组作为参数

作者: wu2016 | 来源:发表于2016-03-21 09:26 被阅读0次

这里先简单举个数组中全是相同类型的Block的例子。

先声明一个Block类型

typedef void(^ZCBLOCK)(void);

写一个弹出弹框的方法如下:

//创建一个弹框,可以自行定义有多少个按钮,但是需要传入按钮的title,并且每个按钮都可以定义一个BLOCK放到BLOCK数组中,在BLOCK中做自己想做的事
- (void)showAlertWithTitle:(nullable NSString *)title
                AndMessage:(nullable NSString *)message
            AndAlertStyle :(UIAlertControllerStyle)style
           AndButtonString:(nonnull NSArray *)array
             AndBlockArray:(nonnull NSArray<BLOCK> *)blockArray
{
    UIAlertController *ZCAlert = [UIAlertController alertControllerWithTitle:title message:message preferredStyle:style];
    for(int i = 0; i < array.count; i++)
    {
        UIAlertAction *action = [UIAlertAction actionWithTitle:array[i] style:UIAlertActionStyleDefault handler:^(UIAlertAction * _Nonnull action) {
            if(blockArray[i])
            {
                blockArray[i]();
            }
        }];
        [ZCAlert addAction:action];
    }
    [self presentViewController:ZCAlert animated:YES completion:nil];
}

如何调用:

@interface OneViewController ()
@property (nonatomic,copy) ZCBLOCK block1;
@property (nonatomic,copy) ZCBLOCK block2;
@property (nonatomic,copy) ZCBLOCK block3;
@end

可以写在viewDidLoad中:

    self.block1 = ^
    {
        NSLog(@"你好!");
    };
    self.block2 = ^
    {
        NSLog(@"好你妹");
    };
    self.block3 = ^
    {
        NSLog(@"好啊好");
    };
    NSArray *array = [NSArray arrayWithObjects:@"你好!",@"好你妹",@"好啊好", nil];
    NSArray *arr = [NSArray arrayWithObjects:self.block1,self.block2,self.block3, nil];
    [self showAlertWithTitle:@"提示" AndMessage:@"你好" AndAlertStyle:UIAlertControllerStyleAlert AndButtonString:array AndBlockArray:arr];

这样就会弹出一个自己定义个数的弹框,并且每个弹框中都可以自己定义去做什么事情。这个Block数组中也可以放不同类型的Block。

这里有个小例子

相关文章

  • Block数组作为参数

    这里先简单举个数组中全是相同类型的Block的例子。 先声明一个Block类型 typedef void(^ZCB...

  • block在开发中的使用场景

    block作为函数的参数 怎么判断参数是不是block 看参数有没有,如果有,就是block参数 作为参数的blo...

  • block作为参数

    应用场景:网络请求或者在一些异步代码中有先后顺序的情况下。例如:1、 网络请求成功之后,再利用请求的结果数据去做其...

  • 数组的几种遍历方式

    28、使用block 块遍历整个数组。这个block 需要三个参数,id obj 表示数组中的元素。NSUInte...

  • block 作为函数参数

  • block作为参数传递

    众所周知,block是iOS开发中一个经常使用的模块, block 可以用来包含一段代码块,可以传值, 用法灵活,...

  • block使用方法

    block基本使用 没有参数,=左边的()里面要写上void。 作为方法的参数传递使用 怎么区分参数是block?...

  • Block的用法

    1.block作为属性 写法1:typedef声明block名称 写法2:直接书写 2.block作为参数 写法:...

  • 7月9号

    1 //数组作为函数参数,可以省略元素个数 //数组作为函数参数,传递是整个数组的地址,修改函数形参数组元素的值,...

  • 【Objective-c】 Block 基本使用及循环引用分析

    1.0 基本使用 2.0 block的闭包 3.0 block作为参数传递 4.0 typedef 与 block...

网友评论

      本文标题:Block数组作为参数

      本文链接:https://www.haomeiwen.com/subject/aeohlttx.html