AlertViewController的快速调用,看我就够了。

前言

Alert 在iOS开发中,是一个经常用到的控件。iOS原生的API中的写法,我这里就不吐槽了,无论是AlertView 还是AlertViewcontroller 都需要很多代码来调用。

网上有很多关于AlertView的封装,再加上这是个已经被废弃的控件。我这里就不来叙述。这里提供一个我自己实现的AlertViewController的快速调用。

看下图,我猜还有很多人,还在用着废弃的Alert,忍受着 ⚠️⚠️⚠️


警告视图

好了下面就直接上代码的使用 >>>>>>

快速创建

代码示范

   [XWAlert showAlertWithTitle:@"提示"
                       message:@"你浏览的是成人内容,是否满足18岁?"
                  confirmTitle:@"满足"
                   cancelTitle:@"自动离开"
                preferredStyle:(UIAlertControllerStyleActionSheet/UIAlertControllerStyleAlert)
                 confirmHandle:^{
                    NSLog(@"满足-----");
   }
                  cancleHandle:^{
                    NSLog(@"不满足-----");

   }];
效果预览

当然,你还可以省略其中任何一个

自定义UIAlertAction 数量种类不限

示例1

   [XWAlert showAlertWithTitle:@"选择题"
                        message:@"菊花一词,为何走红?"
                 preferredStyle:UIAlertControllerStyleAlert
                    actionMaker:^(UIAlertController *maker) {
                        
                        NSString *string1 = @"菊花台这首歌";
                        NSString *string2 = @"陶渊明的诗词";
                        NSString *string3 = @"象征纯洁";
                        NSString *string4 = @"人体器官的形象话";
                        NSString *string5 = @"我选择死亡";

 [maker addAlertDefaultActionWithTitle:string1 handler:^(UIAlertAction * _Nullable action) {
                            NSLog(@"你的选择是--- %@", string1);
                        }];

                        [maker addAlertDefaultActionWithTitle:string2 handler:^(UIAlertAction * _Nullable action) {
                            NSLog(@"你的选择是--- %@", string2);

                        }];
         
                        [maker addAlertDefaultActionWithTitle:string3 handler:^(UIAlertAction * _Nullable action) {
                            NSLog(@"你的选择是--- %@", string3);
                        }];

                        [maker addAlertActionWithTitle:string4 actionStyle:UIAlertActionStyleCancel handler:^(UIAlertAction * _Nullable action) {
                            NSLog(@"你的选择是--- %@", string4);
                            
                        }];

                        [maker addAlertActionWithTitle:string5 actionStyle:UIAlertActionStyleDestructive handler:^(UIAlertAction * _Nullable action) {
                            NSLog(@"你的选择是--- %@", string5);

                        }];
    }];
}
示例1

示例2

   [XWAlert showAlertWithTitle:@"注意"
                        message:@"按照要求填写信息"
                 preferredStyle:self.selectedStyle
                    actionMaker:^(UIAlertController *maker) {
                        
                        NSString *string1 = @"确定";
                        NSString *string2 = @"取消";

                        [maker addAlertDefaultActionWithTitle:string1
                                                      handler:^(UIAlertAction * _Nullable action) {
                            NSLog(@"你的选择是--- %@", string1);
                        }];
                        

                        [maker addAlertActionWithTitle:string2
                                           actionStyle:ActionStyleCancel
                                               handler:^(UIAlertAction * _Nullable action) {
                            NSLog(@"你的选择是--- %@", string2);
                        }];
                        

                        [maker addTextFieldWithPlaceholder:@"输入用户名"
                                           secureTextEntry:NO
                                                   textHandler:^(NSString * _Nullable text) {
                           NSLog(@"你输入的用户是--- %@",text);

                        }];
                        
                        [maker addTextFieldWithPlaceholder:@"输入密码"
                                           secureTextEntry:YES
                                          textFiledhandler:^(UITextField * _Nonnull textField) {
                             textField.textColor = [UIColor greenColor];
                             textField.font = [UIFont boldSystemFontOfSize:16];
                                                     }];
                    }];

示例2
 这里需要注意的是 这个方法 callback 一个 UIAlertController ,*maker。 
 我为UIAlertController添加了一个便利添加UIAlertAction的Category。

第一种是添加一个默认的AlertAction,只需要输入标题,然后handle业务逻辑就可以。

/**
 to add UIAlertAction with UIAlertActionStyleDefault

 @param title - the title of UIAlertAction
 @param handler - to handle your business
 */
- (void)addAlertDefaultActionWithTitle:(NSString *_Nullable)title
                               handler:(void (^_Nullable)(UIAlertAction * _Nullable  action))handler;

第二种和第一种的区别在于可以选择样式

/**
 to add UIAlertAction with Custom Style


 @param title - the title of UIAlertAction
 @param actionStyle - to chose UIAlertActionStyle
 @param handler - to handle your business
 */
- (void)addAlertActionWithTitle:(NSString *_Nullable)title
                    actionStyle:(UIAlertActionStyle)actionStyle
                        handler:(void (^ __nullable)(UIAlertAction * _Nullable action))handler;

第三种是添加TextFiled,可以添加占位,密文输入。会callback 一个输入结束后的text

/**
 to add TextField in your alert , callback the  text which  you input
 it only support in Alert Styple

 @param placeholder - set TextField's placeholder
 @param secureTextEntry - set Secure input Mode
 @param textHandler - to get text which  you input
 */
- (void)addTextFieldWithPlaceholder:(NSString *_Nullable)placeholder
                    secureTextEntry:(BOOL)secureTextEntry
                            textHandler:(TextFiledHanler _Nullable )textHandler;

第四种和第三种类似,添加textFiled;callback的是 textFiled对象本身,用于处理业务逻辑。

/**
 to add TextField in your alert, callback the  textFiled which  you built
 it only support in Alert Styple

 @param placeholder - set TextField's placeholder
 @param secureTextEntry - set Secure input Mode
 @param textFiledhandler - to handle textField which you can do anything
 */
- (void)addTextFieldWithPlaceholder:(NSString *_Nullable)placeholder
                    secureTextEntry:(BOOL)secureTextEntry
                   textFiledhandler:(void(^_Nullable)(UITextField * _Nonnull textField))textFiledhandler;

纯message 自动miss

    [XWAlert showAlertWithTitle:@"注意"
                        message:@"这是一条不要脸的弹窗"
                 preferredStyle:self.selectedStyle
                autoDismissTime:2];
纯文本示例

新增 快速 创建 且可以自定义 style

    [XWAlert showAlertWithTitle:@"title"
                        message:@"message"
                   confirmTitle:@"default style"
                    cancelTitle:@"cancel style"
               destructiveTitle:@"destructive style"
                 preferredStyle:self.selectedStyle
                  confirmHandle:^{
                      
                    NSLog(@"------- default style");

    }
                   cancleHandle:^{
                    NSLog(@"------- cancel style");

    }
              destructiveHandle:^{
                    NSLog(@"------- destructive style");

    }];
    
示范图

CocoaPods 安装

pod 'XWAlert', '~> 1.3'

#import <XWAlert.h>

后记

这只是自己设计出来的一种方案,实现了AlertViewController的大部分功能。
在使用的过程有任何问题都可以向我提出
如果大家有更加好的方案和思路,希望把地址发出来,一起参考学习。

最后, 如果觉得对你有所帮助,还希望大家对我进行支持。😊😊

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 215,634评论 6 497
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,951评论 3 391
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 161,427评论 0 351
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,770评论 1 290
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,835评论 6 388
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,799评论 1 294
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,768评论 3 416
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,544评论 0 271
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,979评论 1 308
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,271评论 2 331
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,427评论 1 345
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,121评论 5 340
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,756评论 3 324
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,375评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,579评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,410评论 2 368
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,315评论 2 352

推荐阅读更多精彩内容

  • 发现 关注 消息 iOS 第三方库、插件、知名博客总结 作者大灰狼的小绵羊哥哥关注 2017.06.26 09:4...
    肇东周阅读 12,089评论 4 62
  • 西风东逝,又一池荷老,露从霜降。 辞罢清秋作小雅,此意难表薄葬。 夜夜弦歌,清樽纵酒,一曲回肠荡。 缘谁苦笑,离别...
    沧玉阅读 529评论 4 6
  • 这两天早晨都在练习xdite老师的急速阅读法,实践下认知学习法的相关技术。 ** Step 1 :找出你最想问这...
    digman阅读 238评论 0 0
  • 忆江南.江南忆 白居易 江南好,风景旧曾谙。 日出江花红胜火,春来江水绿如蓝。 能不忆江南? 今天事情终于有了一...
    顽石的青果花园阅读 207评论 0 2