iOS8新特性-UIAlertController

UIAlertController

iOS8发布也有半年之久了, 下面由小编给大家简单描述概述下关于iOS8的新特性:

  • UIAlertController
  • UIPopoverPresentationController
  • UIPresentationController
  • Sizeclass

UIAlertController

  • 回顾UIAlertView
  • 回顾UIActionSheet
  • UIAlertController详解

回顾UIAlertView

UIAlertView 在iOS 8之前的iOS版本上运行的应用程序,使用UIAlertView类显示警告信息给用户。与其功能类似,但显示样式不同, 同为警告视图的是UIActionSheet类(详见回顾UIActionSheet) —— [iOS8.1 API]

相信UIAlertView对大家来说一定不陌生,因此小编在这里只带大家回顾一下UIAlertView的简单用法。

// 创建并初始化alert
UIAlertView *alertView = [[UIAlertView alloc] initWithTitle:@"提示" message:@"你该吃饭了" delegate:self cancelButtonTitle:@"取消" otherButtonTitles:@"确定", nil];
// 给alert添加文本输入框
alertView.alertViewStyle = UIAlertViewStylePlainTextInput;
// 给alert添加密文输入框
// alertView.alertViewStyle = UIAlertViewStyleSecureTextInput;
// 给alert添加登陆输入框
// alertView.alertViewStyle = UIAlertViewStyleLoginAndPasswordInput;
// 显示alert
[alertView show];

其实, UIAlertView的用法很简单,也很实用。调用show方法就可以得到我们想要的。

回顾UIActionSheet

// 创建一个UIActionSheet对象
UIActionSheet *action = [[UIActionSheet alloc] initWithTitle:@"提示" delegate:nil cancelButtonTitle:@"取消" destructiveButtonTitle:@"确定" otherButtonTitles:@"你猜", nil];
// 将action显示在要显示的view上
[action showInView:self.view];

UIActionSheet在iOS8中被弃用了,因此只是简单给大家介绍一下。我们的重点还是UIAlertController。

UIAlertController详解

在iOS8中更新的UIAlertController将两种警告视图融合成了一个视图控制器,并且能够更好的定制,方便了开发人员。
UIAlertController = UIAlertView + UIActionSheet

查看UIAlertController的头文件,可得知其继承自UIViewController,因此它是一个视图控制器。如下图:

iOS8新特性-UIAlertController_第1张图片

我们可得知该类有个类方法,用于让我们对其设置内容。

+ (instancetype)alertControllerWithTitle:(NSString *)title message:(NSString *)message preferredStyle:(UIAlertControllerStyle)preferredStyle;

该类方法方便我们设置提示的标题和提示内容,和我们所需要显示的样式。UIAlertControllerStyle是个枚举类型。

typedef NS_ENUM(NSInteger, UIAlertControllerStyle) {
    UIAlertControllerStyleActionSheet = 0,
    UIAlertControllerStyleAlert
} NS_ENUM_AVAILABLE_IOS(8_0);

由该枚举类型我们可以看出,UIAlertController有两种样式,分别是UIAlertControllerStyleActionSheet和UIAlertControllerStyleAlert

UIAlertControllerStyleAlert

当我们选择UIAlertControllerStyleAlert时,并其加入到- (void)touchesBegan:(NSSet )touches withEvent:(UIEvent )event方法中时

UIAlertController *alert = [UIAlertController alertControllerWithTitle:@"提示" message:@"你该睡觉了" preferredStyle:UIAlertControllerStyleAlert];

运行程序,发现并没有任何反应,而且查看头文件发现UIAlertController并没有show方法,因为UIAlertController是一个视图控制器,则尝试使用模态推出的方式显示这个UIAlertController

[self presentViewController:alert animated:YES completion:^{ }];

再次运行,发现成功了

但是并没有像之前UIAlertView的一模一样,与之前不同的是,缺少了按钮。因为我们并没有添加按钮,再去查看头文件发现

- (void)addAction:(UIAlertAction *)action;

又多了一个新类UIAlertAction,我们试着创建一个并添加进去

// 创建一个UIAlertAction 选择其样式为UIAlertActionStyleDestructive(毁灭性的)
UIAlertAction *action = [UIAlertAction actionWithTitle:@"确定" style:UIAlertActionStyleDestructive handler:^(UIAlertAction *action) {

    }];
// 向UIAlertAction中添加action 
[alert addAction:action];

运行之后,发现我们想要的按钮出来了,并且可以像ActionSheet那样显示红色的按钮文字。

iOS8新特性-UIAlertController_第2张图片

UIAlertControllerStyleActionSheet

初始化方法和显示方式都同上,只不过改一下样式,在此则不做代码展示了。
给大家看下运行后的结果

iOS8新特性-UIAlertController_第3张图片

iOS8之后,将AlertView和ActionSheet规整成了一个视图控制器,方便了开发人员的自己定制自己想要的警告视图。

你可能感兴趣的:(ios,uialertview)