美文网首页
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数组作为参数

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