美文网首页@IT·互联网
UIAlertView+AssociatedObject应用

UIAlertView+AssociatedObject应用

作者: 马修王 | 来源:发表于2016-08-07 01:03 被阅读0次

UIAlertView是我们代码里面最常使用的一个控件之一了,不过在iOS9.0之后就被苹果淘汰了,具体原因不知道,不过使用过UIAlertView的朋友们应该都被UIAlertViewDelegate里的那一窜长长的if..else判断搞的很头疼,特别是一个页面有多个UIAlertView时...

相信每个人可能都有自己相应的解决办法了,使用一个新的类(继承或封装)来将UIAlertView的处理逻辑和初始化代码同步是比较常见的,我接下来就用关联对象在传统使用方式上做小小的修改,代码如下:

先定义关联对象的Key和UIAlertView处理的block变量类型:

static NSString *MW_ALERT_KEY = @"alertView";
typedef void(^AlertAction)(NSInteger);

编写UIAlertView初始化和show并设置关联对象:

    UIAlertView *alertView = [[UIAlertView alloc] initWithTitle:@"提示" message:@"这个一个关联对象的测试" delegate:self cancelButtonTitle:@"取消" otherButtonTitles:@"确定", nil];
    AlertAction alertActionBlock = ^(NSInteger index){
        if (index == 0) {
            NSLog(@"点击了取消");
        }else if(index == 1){
             NSLog(@"点击了确定");
        }
    };
    objc_setAssociatedObject(alertView, &MW_ALERT_KEY, alertActionBlock, OBJC_ASSOCIATION_COPY_NONATOMIC);
    [alertView show];

最后在UIAlertView的回方法中取出block并执行:

- (void)alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex{
    AlertAction alertActionBlock = objc_getAssociatedObject(alertView, &MW_ALERT_KEY);
    alertActionBlock(buttonIndex);
}

是不是发现代码清晰很多,没有弹框的业务处理和定义放在了一起,看代码的时候就容易很多了

相关文章

  • UIAlertView+AssociatedObject应用

    UIAlertView是我们代码里面最常使用的一个控件之一了,不过在iOS9.0之后就被苹果淘汰了,具体原因不知道...

  • 应用

    【应用】 $应用$ 【应用名称】王者荣耀【应用名称】 【应用介绍】5v5对战手游【应用介绍】 $应用$ 【应用名称...

  • Day17 - Flutter - 应用信息配置

    概述 应用标识 应用名称 应用图标 应用启动图 一、应用标识 1.1. Android应用标识Android应用标...

  • 程序员必须掌握的英语单词

    application 应用程式 应用、应用程序application framework 应用程式框架、应用框架...

  • 程序员600词

    application 应用程式 应用、应用程序application framework 应用程式框架、应用框架...

  • 2018-12-01

    application 应用程式 应用、应用程序 application framework 应用程式框架、应用框...

  • 拍砖推荐(收藏了慢慢看)!!!

    application 应用程式 应用、应用程序application framework 应用程式框架、应用框架...

  • words for IT guys

    application 应用程式 应用、应用程序 application framework 应用程式框架、应用框...

  • 程序员必会的600个英文单词

    application 应用程式 应用、应用程序 application framework 应用程式框架、应用框...

  • 程序员必备词汇

    application 应用程式 应用、应用程序 application framework 应用程式框架、应用框...

网友评论

    本文标题:UIAlertView+AssociatedObject应用

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