ios block的使用

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
}
等值替换
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 一、block的基本语法与使用 概述Block是苹果在iOS4开始引入的对C语言的扩展,用来实现匿名函数的特性,B...
    Tamp_阅读 1,586评论 2 18
  • 一、需求:从添加计划页面push到门店选择页面,在门店选择页面,选中某几行之后,将选中的值,传会到添加计划页面,并...
    想想8606阅读 698评论 0 1
  • Block块 在OC里边应该是比较常见和使用的了,本文只是根据个人经验,记录一些关键的用法提示点和注意点,以方便以...
    有梦想de咸鱼阅读 1,872评论 0 4
  • “如果我办得到,我一定要把保险这两个字写在家家户户的门上,以及每一位公务员的手册上,因为我深信,透过保险,每一个家...
    小暖阁阅读 497评论 2 1
  • 摘选部分: “你知道弃猫效应吗?被丢弃过一次的猫,再被人捡回的话,会乖得不得了。” “因为它害怕再次被丢。” “或...
    迦颜阅读 423评论 0 0