美文网首页
ios block的使用

ios block的使用

作者: 风都 | 来源:发表于2017-03-22 15:49 被阅读154次

    1、有一个方法里面包含了动画,需要在点击其他按钮时调用此方法,并且是动画结束之后执行按钮里面的代码

    - (void)cancel{
        [UIView animateWithDuration:0.5 animations:^{
                    [self dismissViewControllerAnimated:YES completion:nil];
                }];
    
    }
    

    需要在dismiss之后点击按钮,present出一个新的控制器,可以对重新写一个含有block的方法

    - (void)cancelWithCompletionBlock:(void(^)())completionBlock{
    //                if (completionBlock) {
    //                    completionBlock();
    //                }
                    completionBlock ? completionBlock() : nil; // 装逼写法
    }
    

    然后在cancel方法里面调用此方法block传nil;
    然后在其他按钮的点击方法里面调用此方法

    - (void)buttonClick:(UIButton *)button{
        if (button.tag == 0) {
            [self cancelWithCompletionBlock:^{
                ButtonViewController *viewC = [[ButtonViewController alloc] init];
                [[UIApplication sharedApplication].keyWindow.rootViewController presentViewController:viewC animated:YES completion:nil];
            }];
        }
    }
    

    或者也可以将block写成属性
    @property (copy ,nonatomic) void(^completionBlock)();

    至于为什么属性和方法里面的block写法不同

    // 定义属性
    @property (copy ,nonatomic) void(^completionBlock)();
    - (void)setTestView:(UIView *)testView
    
    - (void)setTestView:(void(^)())completionBlock{
    // 定义block变量   
    void(^block)() = ^{
    }
    block(); // 调用block
    }
    等值替换
    

    相关文章

      网友评论

          本文标题:ios block的使用

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