UIAlertView 与 UIActionSheet

  • UIAlertView

    • 样式

    • 实现

      - (void)showAlertView {
      self.alertView = [[UIAlertView alloc] initWithTitle:@"确定操作吗?" message:@"确定可能会有灾难哦!" delegate:self cancelButtonTitle:@"取消" otherButtonTitles:@"确定", nil];
      self.alertView.delegate = self;
      [self.alertView show];
      }
    • 注意

      • 其“确定”按钮的颜色与“取消”按钮的外观一样(没有显示红色,即 normal)
  • UIActionSheet
    • 样式

    • 实现

      - (void)showActionSheet {
      self.actionSheet = [[UIActionSheet alloc] initWithTitle:@"确定操作吗?" delegate:self cancelButtonTitle:@"取消" destructiveButtonTitle:@"确定" otherButtonTitles:nil, nil];
      [self.actionSheet showInView:self.view];
      }
    • 注意

      • 其“确定”按钮的颜色与“取消”按钮的外观不一样(显示红色,即 destructive)

UIAlertController

  • 概述

    • UIAlertController出现的原因,我想就不必多说了。来看看苹果官方的介绍吧!

        A UIAlertController object displays an alert message to the user. This class replaces the UIActionSheet and UIAlertView classes for displaying alerts. After configuring the alert controller with the actions and style you want, present it using the presentViewController:animated:completion: method UIAlertController 
      
        实例是用来向用户警告信息的。该类旨在替代 UIActionSheet 和 UIAlertView。若你按照自己的需求配置了 UIAlertController 的 actions 和 style,就使用 presentViewController:animated:completion: 方法来显示它吧
  • UIAlertController 的使用步骤

    • 初始化 UIAlertController, 并设置标题,副标题,alert的样式(alert 或 actionSheet)
    • 添加事件
      • 使用 UIAlertAction 定义每一个事件,与事件相关的 title、style、action
      • style
        • UIAlertActionStyleDefault
        • UIAlertActionStyleCancel
        • UIAlertActionStyleDestructive
      • action
        • 使用 block 代替了原来的 代理模式
    • 显示 alert
  • UIAlertController 的简单使用

    • 显示 alertView

      • 初始化 UIAlertController

        self.alertController = [UIAlertController alertControllerWithTitle:@"确定操作吗?" message:@"确定可能会有灾难哦!" preferredStyle:UIAlertControllerStyleAlert];
      • 添加事件(事件的添加顺序,会影响按钮的显示顺序

        UIAlertAction *cancelAction = [UIAlertAction actionWithTitle:@"取消" style:UIAlertActionStyleDefault handler:^(UIAlertAction * _Nonnull action) {
        //TODO:
        }];
        [self.alertController addAction:cancelAction];
        UIAlertAction *confirmAction = [UIAlertAction actionWithTitle:@"确定" style:UIAlertActionStyleDestructive handler:^(UIAlertAction * _Nonnull action) {
        //TODO:
        }];
        [self.alertController addAction:confirmAction];
      • 显示 alert

        [self presentViewController:self.alertController animated:YES completion:^{
        // TODO
        }];
    • 显示 actionSheet

      • 在此就不再贴代码了,把 上述代码的 UIAlertControllerStyleAlert 改成 UIAlertControllerStyleActionSheet 试试吧

UIAlertController 中的 textField

  • 注意

    • 只能向 alert 类型的 UIAlertController 中添加 textField

    • 向 actionSheet 类型的 UIAlertController 中添加 textField,会报运行时错误

      Text fields can only be added to an alert controller of style UIAlertControllerStyleAlert

  • 使用 UIAlertController 实现登录界面(demo
    • 效果

    • 具体实现

      • 使用 CocoaPods 集成 MBProgressHUD 框架(CocoaPods的安装和使用那些事(Xcode 7.2,iOS 9.2,Swift)

        • 编辑 podfile 文件,如下:

        • 为了使用的方便,通常会为 MBProgressHUD 添加分类,在此只添加 showMessage 方法,如下

          + (void)showMessage:(NSString *)message {
          // hud 显示的 view
          UIView *contentView = [[UIApplication sharedApplication].windows lastObject];
          // hud
          MBProgressHUD *hud = [MBProgressHUD showHUDAddedTo:contentView animated:YES];
          // hud 显示的信息
          hud.detailsLabelText = message;
          // 当 hud 隐藏时是否从父控件中移除
          hud.removeFromSuperViewOnHide = YES;
          // hub 显示的时间
          [hud hide:YES afterDelay:1.5f];
          }
      • 设置 UIAlertController
        • 初始化 UIAlertController

          self.alertController = [UIAlertController alertControllerWithTitle:@"登录" message:nil preferredStyle:UIAlertControllerStyleAlert];
        • 添加 textField(textField 与 action 的添加顺序,不影响其显示顺序)

          [self.alertController addTextFieldWithConfigurationHandler:^(UITextField * _Nonnull textField) {
          textField.placeholder = @"账户";
          }];
          [self.alertController addTextFieldWithConfigurationHandler:^(UITextField * _Nonnull textField) {
          textField.placeholder = @"密码";
          }];
        • 添加事件

          UIAlertAction *cancelAction = [UIAlertAction actionWithTitle:@"取消" style:UIAlertActionStyleDefault handler:^(UIAlertAction * _Nonnull action) {
          // TODO:
          }];
          [self.alertController addAction:cancelAction];
          UIAlertAction *confirmAction = [UIAlertAction actionWithTitle:@"确定" style:UIAlertActionStyleDestructive handler:^(UIAlertAction * _Nonnull action) {
          // get the account and password
          UITextField *accountTextField = self.alertController.textFields[0];
          UITextField *passwordTextField = self.alertController.textFields[1];
          NSString *message = [NSString stringWithFormat:@"账户:%@\n密码:%@", accountTextField.text, passwordTextField.text];
          // 显示 MBProgressHUD(需要在主线程中显示)
          dispatch_async(dispatch_get_main_queue(), ^{
          [MBProgressHUD showMessage:message];
          });
          }];
          [self.alertController addAction:confirmAction];
        • 显示 alert

          [self presentViewController:self.alertController animated:YES completion:^{
          // TODO
          }];

开始使用 UIAlertController 吧的更多相关文章

  1. UIAlertController

    楼主在整理项目的警告,于是乎你懂的. 然后自己整理了一下以后方便自己忘了之后能及时找到它 关于UIAlertController .h文件的解析 /** 关于UIAlertController的解析 ...

  2. iOS UIAlertController跟AlertView用法一样 && otherButtonTitles:(nullable NSString *)otherButtonTitles, ... 写法

    今天写弹出框UIAlertController,用alertView习惯了,所以封装了一下,跟alertView用法一样,不说了,直接上代码: 先来了解一下otherButtonTitles:(nul ...

  3. UIAlertController使用

    // 将UIAlertController模态出来 相当于UIAlertView show 的方法// 初始化一个一个UIAlertController    // 参数preferredStyle: ...

  4. IOS UIAlertController 使用方法

    在很多种语言中,alert都表示弹窗操作,弹窗功能非常有用,不仅可以用于正式的app功能中,也可以在调试中使用.在OC中,UIAlertController类用来控制弹窗操作.在IOS 8.0之前, ...

  5. UI控件(UIAlertController)

    @implementation ViewController - (void)viewDidLoad { [super viewDidLoad]; UIButton *_button = [UIBut ...

  6. UIAlertController 部分用法及属性

    //创建UIAlertController:初始化UIAlertController 需要使用alertControllerWithTitle UIAlertController *alertCont ...

  7. iOS--UIAlertView与UIAlertController和UIAlertAction之间的事儿

      iOS 8的新特性之一就是让接口更有适应性.更灵活,因此许多视图控制器的实现方式发生了巨大的变化.全新的UIPresentationController在实现视图控制器间的过渡动画效果和自适应设备 ...

  8. UI第十四节——UIAlertController

    - (void)viewDidLoad {    [super viewDidLoad];        UIButton *alertBtn = [UIButton buttonWithType:U ...

  9. iOS 8.0后使用UIAlertController

    iOS 8的新特性之一就是让接口更有适应性.更灵活,因此许多视图控制器的实现方式发生了巨大的变化.全新的UIPresentationController在实现视图控制器间的过渡动画效果和自适应设备尺寸 ...

随机推荐

  1. scikit-learn 朴素贝叶斯类库使用小结

    之前在朴素贝叶斯算法原理小结这篇文章中,对朴素贝叶斯分类算法的原理做了一个总结.这里我们就从实战的角度来看朴素贝叶斯类库.重点讲述scikit-learn 朴素贝叶斯类库的使用要点和参数选择. 1. ...

  2. JavaScript的全局变量与局部变量解析

    一.JavaScript scope 的划分标准是function函数块,不是以 if.while.for来划分的 <script> function f1(){ alert(" ...

  3. AVFoundation播放视频时显示字幕,切换音轨

    主要用到两个类:AVMediaSelectionGroup 和 AVMediaSelectionOption 调用 AVAsset对象的availableMediaCharacteristicsWit ...

  4. Windows 10 技术预览版9926 “未知源”引起系统休眠后自启的解决办法

    问题的由来: 自从安装上了最新发布的Windows 10 ,使用起来有诸多的改进:无论是重绘的图标还是通知消息中心的整合还是更智能的OneDrive客户端都使得工作起来非常愉悦. 不过笔者这两天频繁遇 ...

  5. jQuery中的Sizzle引擎分析

    我分析的jQuery版本是1.8.3.Sizzle代码从3669行开始到5358行,将近2000行的代码,这个引擎的版本还是比较旧,最新的版本已经到v2.2.2了,代码已经超过2000行了.并且还有个 ...

  6. Freemark笔记

    Freemark基本语法知识 Freemark 常用代码总结1 Freemark 常用代码总结2 笔记,吐槽一下freemark的蛋疼语法. 1.elseif 中间不能有空格 2.三目运算符 语法和j ...

  7. MongoDB初学

    参考:MongoDB 教程 | 菜鸟教程 安装 1.下载安装,从官网下载winows安装包,安装到d盘(注意路径) 2.由于我安装在d盘,所以在d盘创建文件夹data,里面创建db文件夹 3.启动方法 ...

  8. 使用 PowerShell 自动化 CloudServices 发布

    在软件的开发过程中,自动化的编译和部署能够带来很多的优势.如果可以通过一个脚本实现软件的自动化部署,那么就可以节省大量的时间去做其它事情. 下面介绍如何将云应用程序通过 PowerShell 自动发布 ...

  9. Python_Day_05 计数器(counter),有序字典(OrderDict),默认字典(defaultdict),可命名元祖(namedtuple),双向队列(deque),单项队列(deuqe.Queue)

    Counter(计数器) 是一个字典的子类,存储形式同样为字典,其中存储的键为字典的元素,值为元素出现的次数,在使用之前我们需要先导入文件 import collections 初始化一个计数器 im ...

  10. Web 组合查询加 分页

    使用ADO.NET 数据访问技术制作web端组合查询加分页的功能关键在于查询SQL语句的拼接 以Car 表为例 每页显示3条数据 数据访问类使用查询方法,tsql 查询的连接字符串,查询的参数放到Ha ...