UIAlertController使用

在 iOS 8 中,UIAlertController 在功能上是和 UIAlertView 以及
UIActionSheet 相同的,UIAlertController以一种模块化替换的方式来代替这两个的功能和作用。

" UIAlertView is deprecated. Use UIAlertController with a preferredStyle of UIAlertControllerStyleAlert instead."

"UIActionSheet is deprecated. Use UIAlertController with a preferredStyle of UIAlertControllerStyleActionSheet instead. "

一、UIAlertController的使用步骤

使用UIAlertController共需要三步:

  • 实例化UIAlertController

  • 实例化UIAlertAction

  • 显示UIAlertController

1、实例化UIAlertController
UIAlertController *alertController = [UIAlertController alertControllerWithTitle:@"Title" message:@"message" preferredStyle:UIAlertControllerStyleAlert];

初始化时候需要设置样式 UIAlertControllerStyle,来确定是 Alert 还是 ActionSheet:

typedef NS_ENUM(NSInteger, UIAlertControllerStyle) {
    UIAlertControllerStyleActionSheet = 0,
    UIAlertControllerStyleAlert
} NS_ENUM_AVAILABLE_IOS(8_0);
2、实例化UIAlertAction
UIAlertAction *cancelAction = [UIAlertAction actionWithTitle:@"Cancel" style:UIAlertActionStyleCancel handler:^(UIAlertAction * _Nonnull action) {
    NSLog(@"点击了Cancel");
}];
UIAlertAction *okAction = [UIAlertAction actionWithTitle:@"OK" style:UIAlertActionStyleDefault handler:^(UIAlertAction * _Nonnull action) {
    NSLog(@"点击了OK");
}];
[alertController addAction:cancelAction];
[alertController addAction:okAction];

通过创建 UIAlertAction 的实例,你可以将动作按钮添加到控制器上。

UIAlertAction 由标题字符串、样式以及当用户选中该动作时运行的代码块组成。

为了实现原来我们在创建 UIAlertView 时创建的按钮效果,我们只需创建这两个动作按钮并将它们添加到控制器上即可。

通过 UIAlertActionStyle,您可以选择如下三种动作样式:常规(default)、取消(cancel)以及警示(destruective)。

typedef NS_ENUM(NSInteger, UIAlertActionStyle) {
    // 常规样式
    UIAlertActionStyleDefault = 0,
    // 取消样式
    UIAlertActionStyleCancel,
    // 警示样式,按钮字体为红色
    UIAlertActionStyleDestructive
} NS_ENUM_AVAILABLE_IOS(8_0);

按钮显示的次序取决于它们添加到对话框控制器上的次序。一般来说,根据苹果官方制定的《iOS 用户界面指南》,在拥有两个按钮的对话框中,您应当将取消按钮放在左边。要注意,取消按钮是唯一的,如果您添加了第二个取消按钮,那么你就会得到如下的一个运行时异常:

‘UIAlertController can only have one action with a style of UIAlertActionStyleCancel’
2.1、UIAlertActionStyleDefault 和 UIAlertActionStyleCancel 的区别:

添加UIAlertActionStyleCancel样式后,在UIAlertAction只有两个时,UIAlertActionStyleCancel样式的action都会按苹果的默认风格把取消按钮放在左边;

添加UIAlertActionStyleCancel样式后,在UIAlertAction有三个及其以上的时候,UIAlertActionStyleCancel样式的action会显示在最下面。

而添加UIAlertActionStyleDefault样式时,与你addAction到alertController上的顺序有关。

2.2、UIAlertActionStyleDestructive 警示样式
UIAlertController使用_第1张图片
警示样式的按钮“重置”

警示样式的按钮变成了红色。根据苹果官方的定义,“警示”样式的按钮是用在可能会改变或删除数据的操作上,因此用了红色的醒目标识来警示用户。

3、显示UIAlertController
[self presentViewController:alertController animated:YES completion:nil];
主要代码:
UIAlertController *alertController = [UIAlertController alertControllerWithTitle:@"Title" message:@"message" preferredStyle:UIAlertControllerStyleAlert];

UIAlertAction *cancelAction = [UIAlertAction actionWithTitle:@"Cancel" style:UIAlertActionStyleCancel handler:^(UIAlertAction * _Nonnull action) {
    NSLog(@"点击了Cancel");
}];
UIAlertAction *okAction = [UIAlertAction actionWithTitle:@"OK" style:UIAlertActionStyleDefault handler:^(UIAlertAction * _Nonnull action) {
    NSLog(@"点击了OK");
}];

[alertController addAction:okAction];
[alertController addAction:cancelAction];

[self presentViewController:alertController animated:YES completion:nil];

你可能感兴趣的:(UIAlertController使用)