• 警示框UIAlertController的使用(看完马上会用!!)


    本文尽量图文并茂,并且提供对应的代码,确保看到这篇文章马上能够上手使用UIAlertController控件。~我要兑现我的务实宣言~


     本文构思:

    1、出具效果图,通过这种最直接方式了解该控件的展示效果看看是不是所需要的。

    2、每种效果图对应的代码,绝对是拿出去直接可以显示出效果的。

    3、根据苹果官方给出的UIAlertController的声明文件,总的再进行一次梳理知识。

         

         

     

    为了描述,下面使用的是图1、图2、图3等等,来指代上面展示的7张图。接下来给出每个图对应的代码。

    // 图一
    UIAlertController *alert = [UIAlertController alertControllerWithTitle:@"提示"
                                                                   message:@"确定取消活动?"
                                                            preferredStyle:UIAlertControllerStyleAlert];
    // UIAlertActionStyleDefault,可以多个按钮为这个类型
    UIAlertAction *sureAction = [UIAlertAction actionWithTitle:@"确定" style:UIAlertActionStyleDefault
                                                       handler:^(UIAlertAction * action) {
                                                           
                                                       }];
    // UIAlertActionStyleCancel,只能有一个UIAlertAction实例对象为这种类型
    // UIAlertActionStyleCancel类型的UIAlertAction按钮,永远都在最右边(最下面)的位置
    // 默认UIAlertActionStyleCancel类型的UIAlertAction按钮,为preferredAction
    UIAlertAction *cancelAction = [UIAlertAction actionWithTitle:@"取消" style:UIAlertActionStyleCancel
                                                         handler:^(UIAlertAction * action) {
                                                             
                                                         }];
    // 添加3个以上的UIAlertAction按钮,就竖向排开。2个(含)以内就是水平排开
    [alert addAction:sureAction];
    [alert addAction:cancelAction];
    // 只能使用模态的方式切入
    [self.viewController presentViewController:alert animated:NO completion:nil];
    // 图二
    UIAlertController *alert = [UIAlertController alertControllerWithTitle:@"提示"
                                                                   message:@"确定取消活动?"
                                                            preferredStyle:UIAlertControllerStyleAlert];
    // UIAlertActionStyleDefault,可以多个按钮为这个类型
    UIAlertAction *sureAction = [UIAlertAction actionWithTitle:@"确定" style:UIAlertActionStyleDefault
                                                       handler:^(UIAlertAction * action) {
                                                           
                                                       }];
    // UIAlertActionStyleCancel,只能有一个UIAlertAction实例对象为这种类型
    // UIAlertActionStyleCancel类型的UIAlertAction按钮,永远都在最右边(最下面)的位置
    // 默认UIAlertActionStyleCancel类型的UIAlertAction按钮,为preferredAction
    UIAlertAction *cancelAction = [UIAlertAction actionWithTitle:@"取消" style:UIAlertActionStyleCancel
                                                         handler:^(UIAlertAction * action) {
                                                             
                                                         }];
    // UIAlertActionStyleDestructive颜色为红色,谨慎操作效果
    UIAlertAction *maybeAction1 = [UIAlertAction actionWithTitle:@"随机1" style:UIAlertActionStyleDestructive
                                                         handler:^(UIAlertAction * action) {
                                                             
                                                         }];
    // UIAlertActionStyleDefault,可以多个按钮为这个类型
    UIAlertAction *maybeAction2 = [UIAlertAction actionWithTitle:@"随机2" style:UIAlertActionStyleDefault
                                                         handler:^(UIAlertAction * action) {
                                                             
                                                         }];
    // UIAlertActionStyleDefault,可以多个按钮为这个类型
    UIAlertAction *maybeAction3 = [UIAlertAction actionWithTitle:@"随机3" style:UIAlertActionStyleDefault
                                                         handler:^(UIAlertAction * action) {
                                                             
                                                         }];
    // enabled = NO;按钮颜色变为灰色,并且不可点击
    maybeAction3.enabled = NO;
    // 添加3个以上的UIAlertAction按钮,就竖向排开。2个(含)以内就是水平排开
    [alert addAction:sureAction];
    [alert addAction:cancelAction];
    [alert addAction:maybeAction1];
    [alert addAction:maybeAction2];
    [alert addAction:maybeAction3];
    // 只能使用模态的方式切入
    [self.viewController presentViewController:alert animated:NO completion:nil];
    // 图三
    UIAlertController *alert = [UIAlertController alertControllerWithTitle:@"提示"
                                                                   message:@"确定取消活动?"
                                                            preferredStyle:UIAlertControllerStyleAlert];
    // UIAlertActionStyleDefault,可以多个按钮为这个类型 UIAlertAction *sureAction = [UIAlertAction actionWithTitle:@"确定" style:UIAlertActionStyleDefault handler:^(UIAlertAction * action) { }];
    // UIAlertActionStyleCancel,只能有一个UIAlertAction实例对象为这种类型 // UIAlertActionStyleCancel类型的UIAlertAction按钮,永远都在最右边(最下面)的位置 // 默认UIAlertActionStyleCancel类型的UIAlertAction按钮,为preferredAction UIAlertAction *cancelAction = [UIAlertAction actionWithTitle:@"取消" style:UIAlertActionStyleCancel handler:^(UIAlertAction * action) { }];
    // UIAlertActionStyleDestructive颜色为红色,谨慎操作效果 UIAlertAction *maybeAction1 = [UIAlertAction actionWithTitle:@"随机1" style:UIAlertActionStyleDestructive handler:^(UIAlertAction * action) { }];
    // UIAlertActionStyleDefault,可以多个按钮为这个类型 UIAlertAction *maybeAction2 = [UIAlertAction actionWithTitle:@"随机2" style:UIAlertActionStyleDefault handler:^(UIAlertAction * action) { }];
    // UIAlertActionStyleDefault,可以多个按钮为这个类型 UIAlertAction *maybeAction3 = [UIAlertAction actionWithTitle:@"随机3" style:UIAlertActionStyleDefault handler:^(UIAlertAction * action) { }];
    // enabled = NO;按钮颜色变为灰色,并且不可点击 maybeAction3.enabled = NO;
    // 添加3个以上的UIAlertAction按钮,就竖向排开。2个(含)以内就是水平排开 [alert addAction:sureAction]; [alert addAction:cancelAction]; [alert addAction:maybeAction1]; [alert addAction:maybeAction2]; [alert addAction:maybeAction3];
    // 默认是UIAlertActionStyleCancel类型的UIAlertAction按钮 // preferredAction后的UIAlertAction按钮,字体加粗,颜色等不变。只在UIAlertControllerStyleAlert时有效 // 但是依然是UIAlertActionStyleCancel类型的UIAlertAction按钮在最右边(最下面)的位置 alert.preferredAction = maybeAction2; // 只能使用模态的方式切入 [self.viewController presentViewController:alert animated:NO completion:nil];
    // 图四
    UIAlertController *alert = [UIAlertController alertControllerWithTitle:@"提示"
                                                                   message:@"确定取消活动?"
                                                            preferredStyle:UIAlertControllerStyleAlert];
    // UIAlertActionStyleDefault,可以多个按钮为这个类型 UIAlertAction *sureAction = [UIAlertAction actionWithTitle:@"确定" style:UIAlertActionStyleDefault handler:^(UIAlertAction * action) { }];
    // UIAlertActionStyleCancel,只能有一个UIAlertAction实例对象为这种类型 // UIAlertActionStyleCancel类型的UIAlertAction按钮,永远都在最右边(最下面)的位置 // 默认UIAlertActionStyleCancel类型的UIAlertAction按钮,为preferredAction UIAlertAction *cancelAction = [UIAlertAction actionWithTitle:@"取消" style:UIAlertActionStyleCancel handler:^(UIAlertAction * action) { }]; // 添加3个以上的UIAlertAction按钮,就竖向排开。2个(含)以内就是水平排开 [alert addAction:sureAction]; [alert addAction:cancelAction]; // reason: 'Text fields can only be added to an alert controller of style UIAlertControllerStyleAlert'==TextField只能在Alert是UIAlertControllerStyleAlert类型的时候才可以使用。 // 添加过多的TextField,Alert势必会显示不下。系统采取的策略是,先让Textfield区域往下延伸,使得UIAlertAction区域进行滚动。当把UIAlertAction区域拥挤到只能显示两个按钮,开始让Textfield区域也可以滚动。 [alert addTextFieldWithConfigurationHandler:^(UITextField * _Nonnull textField) { }]; // 可以通过textFields方法,取出添加进去的TextField,然后对UITextField对象进行操作 NSArray<UITextField *> *alertTextField = [alert textFields]; UITextField *firstTextField = [alertTextField firstObject]; firstTextField.text = @"firstTextField"; // 只能使用模态的方式切入 [self.viewController presentViewController:alert animated:NO completion:nil];
    // 图五
    UIAlertController *alert = [UIAlertController alertControllerWithTitle:@"提示"
                                                                   message:@"确定取消活动?"
                                                            preferredStyle:UIAlertControllerStyleAlert];
    // UIAlertActionStyleDefault,可以多个按钮为这个类型 UIAlertAction *sureAction = [UIAlertAction actionWithTitle:@"确定" style:UIAlertActionStyleDefault handler:^(UIAlertAction * action) { }];
    // UIAlertActionStyleCancel,只能有一个UIAlertAction实例对象为这种类型 // UIAlertActionStyleCancel类型的UIAlertAction按钮,永远都在最右边(最下面)的位置 // 默认UIAlertActionStyleCancel类型的UIAlertAction按钮,为preferredAction UIAlertAction *cancelAction = [UIAlertAction actionWithTitle:@"取消" style:UIAlertActionStyleCancel handler:^(UIAlertAction * action) { }];
    // UIAlertActionStyleDestructive颜色为红色,谨慎操作效果 UIAlertAction *maybeAction1 = [UIAlertAction actionWithTitle:@"随机1" style:UIAlertActionStyleDestructive handler:^(UIAlertAction * action) { }];
    // UIAlertActionStyleDefault,可以多个按钮为这个类型 UIAlertAction *maybeAction2 = [UIAlertAction actionWithTitle:@"随机2" style:UIAlertActionStyleDefault handler:^(UIAlertAction * action) { }];
    // UIAlertActionStyleDefault,可以多个按钮为这个类型 UIAlertAction *maybeAction3 = [UIAlertAction actionWithTitle:@"随机3" style:UIAlertActionStyleDefault handler:^(UIAlertAction * action) { }];
    // enabled = NO;按钮颜色变为灰色,并且不可点击 maybeAction3.enabled = NO;
    // 添加3个以上的UIAlertAction按钮,就竖向排开。2个(含)以内就是水平排开 [alert addAction:sureAction]; [alert addAction:cancelAction]; [alert addAction:maybeAction1]; [alert addAction:maybeAction2]; [alert addAction:maybeAction3];
    // 默认是UIAlertActionStyleCancel类型的UIAlertAction按钮 // preferredAction后的UIAlertAction按钮,字体加粗,颜色等不变。只在UIAlertControllerStyleAlert时有效 // 但是依然是UIAlertActionStyleCancel类型的UIAlertAction按钮在最右边(最下面)的位置 alert.preferredAction = maybeAction2; // reason: 'Text fields can only be added to an alert controller of style UIAlertControllerStyleAlert'==TextField只能在Alert是UIAlertControllerStyleAlert类型的时候才可以使用。 // 添加过多的TextField,Alert势必会显示不下。系统采取的策略是,先让Textfield区域往下延伸,使得UIAlertAction区域进行滚动。当把UIAlertAction区域拥挤到只能显示两个按钮,开始让Textfield区域也可以滚动。 [alert addTextFieldWithConfigurationHandler:^(UITextField * _Nonnull textField) { }]; [alert addTextFieldWithConfigurationHandler:^(UITextField * _Nonnull textField) {
    }]; [alert addTextFieldWithConfigurationHandler:
    ^(UITextField * _Nonnull textField) {
    }]; [alert addTextFieldWithConfigurationHandler:
    ^(UITextField * _Nonnull textField) {
    }]; [alert addTextFieldWithConfigurationHandler:
    ^(UITextField * _Nonnull textField) {
    }]; [alert addTextFieldWithConfigurationHandler:
    ^(UITextField * _Nonnull textField) {
    }]; [alert addTextFieldWithConfigurationHandler:
    ^(UITextField * _Nonnull textField) {
    }]; [alert addTextFieldWithConfigurationHandler:
    ^(UITextField * _Nonnull textField) {
    }]; [alert addTextFieldWithConfigurationHandler:
    ^(UITextField * _Nonnull textField) {
    }];
    // 可以通过textFields方法,取出添加进去的TextField,然后对UITextField对象进行操作 NSArray<UITextField *> *alertTextField = [alert textFields]; UITextField *firstTextField = [alertTextField firstObject]; firstTextField.text = @"firstTextField"; // 只能使用模态的方式切入 [self.viewController presentViewController:alert animated:NO completion:nil];
    // 图六
    UIAlertController *alert = [UIAlertController alertControllerWithTitle:@"提示"
                                                                   message:@"确定取消活动?"
                                                            preferredStyle:UIAlertControllerStyleActionSheet];
    // UIAlertActionStyleDefault,可以多个按钮为这个类型 UIAlertAction *sureAction = [UIAlertAction actionWithTitle:@"确定" style:UIAlertActionStyleDefault handler:^(UIAlertAction * action) { }];
    // UIAlertActionStyleCancel,只能有一个UIAlertAction实例对象为这种类型 // UIAlertActionStyleCancel类型的UIAlertAction按钮,永远都在最右边(最下面)的位置 // 默认UIAlertActionStyleCancel类型的UIAlertAction按钮,为preferredAction UIAlertAction *cancelAction = [UIAlertAction actionWithTitle:@"取消" style:UIAlertActionStyleCancel handler:^(UIAlertAction * action) { }]; // 添加3个以上的UIAlertAction按钮,就竖向排开。2个(含)以内就是水平排开 [alert addAction:sureAction]; [alert addAction:cancelAction]; // 只能使用模态的方式切入 [self.viewController presentViewController:alert animated:NO completion:nil];
    // 图七
    UIAlertController *alert = [UIAlertController alertControllerWithTitle:@"提示"
                                                                   message:@"确定取消活动?"
                                                            preferredStyle:UIAlertControllerStyleActionSheet];
    // UIAlertActionStyleDefault,可以多个按钮为这个类型 UIAlertAction *sureAction = [UIAlertAction actionWithTitle:@"确定" style:UIAlertActionStyleDefault handler:^(UIAlertAction * action) { }];
    // UIAlertActionStyleCancel,只能有一个UIAlertAction实例对象为这种类型 // UIAlertActionStyleCancel类型的UIAlertAction按钮,永远都在最右边(最下面)的位置 // 默认UIAlertActionStyleCancel类型的UIAlertAction按钮,为preferredAction UIAlertAction *cancelAction = [UIAlertAction actionWithTitle:@"取消" style:UIAlertActionStyleCancel handler:^(UIAlertAction * action) { }];
    // UIAlertActionStyleDestructive颜色为红色,谨慎操作效果 UIAlertAction *maybeAction1 = [UIAlertAction actionWithTitle:@"随机1" style:UIAlertActionStyleDestructive handler:^(UIAlertAction * action) { }];
    // UIAlertActionStyleDefault,可以多个按钮为这个类型 UIAlertAction *maybeAction2 = [UIAlertAction actionWithTitle:@"随机2" style:UIAlertActionStyleDefault handler:^(UIAlertAction * action) { }]; // UIAlertActionStyleDefault,可以多个按钮为这个类型 UIAlertAction *maybeAction3 = [UIAlertAction actionWithTitle:@"随机3" style:UIAlertActionStyleDefault handler:^(UIAlertAction * action) { }];
    // enabled = NO;按钮颜色变为灰色,并且不可点击 maybeAction3.enabled = NO;
    // 添加3个以上的UIAlertAction按钮,就竖向排开。2个(含)以内就是水平排开 [alert addAction:sureAction]; [alert addAction:cancelAction]; [alert addAction:maybeAction1]; [alert addAction:maybeAction2]; [alert addAction:maybeAction3];
    // 默认是UIAlertActionStyleCancel类型的UIAlertAction按钮 // preferredAction后的UIAlertAction按钮,字体加粗,颜色等不变。只在UIAlertControllerStyleAlert时有效 // 但是依然是UIAlertActionStyleCancel类型的UIAlertAction按钮在最右边(最下面)的位置 alert.preferredAction = maybeAction2; // 只能使用模态的方式切入 [self.viewController presentViewController:alert animated:NO completion:nil];

     梳理知识方面的话,我觉得如果对着上面的效果图,再加上把代码运行在Xcode上的话,关于这个控件的时候我相信应该是已经掌握了的。

    ~本文到此结束,如果后面苹果SDK的变动影响到这个知识了,我会及时更新的。 

  • 相关阅读:
    How to Enable Trace or Debug for APIs executed as SQL Script Outside of the Applications ?
    Android中MVC、MVP、MVVM具体解释
    破坏性创新第一原则
    Android学习笔记(八)——显示运行进度对话框
    Hadoop知识汇总
    mybatis collection和association使用区别
    mybatis $和#
    IDEA新建一个多maven模块工程(有图)
    可输入的下拉框
    springboot 使用i18n进行国际化
  • 原文地址:https://www.cnblogs.com/cchHers/p/9019011.html
Copyright © 2020-2023  润新知