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

96
Civel_Xu
2017.03.31 19:33* 字数 455

前言

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的大部分功能。
在使用的过程有任何问题都可以向我提出
如果大家有更加好的方案和思路,希望把地址发出来,一起参考学习。

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

日记本