博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
iOS:UIAlertController和UIAlertAction的详解
阅读量:6444 次
发布时间:2019-06-23

本文共 4185 字,大约阅读时间需要 13 分钟。

提示框控制器:UIAlertController

提示框按钮:UIAlertAction
 
功能:用来提示信息,并给出一些可以进行选择的按钮来处理相应的要求。
 
注意:
在Xcode的iOS8 SDK中,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.” 。说明了在iOS8+开发,UIALertView和UIActionSheet已经过时了,UIAlertController以一种模块化替换的方式来代替这两这两个控件的功能和作用。如何创建及使用UIAlertController成为我们所关注的问题。
 
类介绍:
1、提示框风格枚举(分为UIAlertView、UIActionSheet)

typedef NS_ENUM(NSInteger, UIAlertControllerStyle) {

    UIAlertControllerStyleActionSheet = 0,  //在视图底部弹出的提示框,它不能添加文本框,而且在ipad中必须使用popover形式展示

    UIAlertControllerStyleAlert                  //在视图中间弹出的提示框

} NS_ENUM_AVAILABLE_IOS(8_0);

 

2、提示框上按钮的风格

typedef NS_ENUM(NSInteger, UIAlertActionStyle) {

    UIAlertActionStyleDefault = 0,    //默认的确认按钮

    UIAlertActionStyleCancel,          //默认的取消按钮

    UIAlertActionStyleDestructive    //默认的红色按钮

}NS_ENUM_AVAILABLE_IOS(8_0);

 

3、UIAlertController:提示框控制器类

@interface UIAlertController : UIViewController

方法:

//创建提示框控制器的类方法

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

//在提示框上添加文本框的实例方法(只能在UIAlertView风格的提示框添加)

- (void)addTextFieldWithConfigurationHandler:(void (^)(UITextField *textField))configurationHandler;

//在提示框上添加按钮

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

 

属性:

//提示框上存放所有按钮的数组

@property (nonatomic, readonly) NSArray *actions;

//提示框上存放所有文本框的数组

@property (nonatomic, readonly) NSArray *textFields;

//提示框的标题

@property (nonatomic, copy) NSString *title;

//提示信息

@property (nonatomic, copy) NSString *message;

//提示框控制器的风格

@property (nonatomic, readonly) UIAlertControllerStyle preferredStyle;

@end

 

4、UIAlertAction:提示框按钮

@interface UIAlertAction : NSObject <NSCopying>

方法:

//创建提示框按钮的类方法

+ (instancetype)actionWithTitle:(NSString *)title style:(UIAlertActionStyle)style handler:(void (^)(UIAlertAction *action))handler;

 

属性:

//按钮标题

@property (nonatomic, readonly) NSString *title;

//按钮的风格

@property (nonatomic, readonly) UIAlertActionStyle style;

//按钮是否有效

@property (nonatomic, getter=isEnabled) BOOL enabled;

@end

 

具体的实例如下:

创建步骤:

1、布局故事板,在控制器的视图中拖入一个按钮,并关联IBAction事件

 

2、在按钮的关联事件中的主要代码如下:

//创建提示框控制器

//创建提示框控制器    UIAlertController *alertController = [UIAlertController alertControllerWithTitle:@"提示框" message:@"消息" preferredStyle:UIAlertControllerStyleAlert];    alertController.view.backgroundColor = [UIColor purpleColor];

//创建提示框按钮

//创建提示按钮    UIAlertAction *action1 = [UIAlertAction actionWithTitle:@"默认Cancel" style:UIAlertActionStyleCancel handler:nil];        UIAlertAction *action2 = [UIAlertAction actionWithTitle:@"默认Default" style:UIAlertActionStyleDefault handler:nil];        UIAlertAction *action3 = [UIAlertAction actionWithTitle:@"默认Destructive" style:UIAlertActionStyleDestructive handler:nil];

//添加提示按钮到提示框中

//添加提示按钮    [alertController addAction:action1];    [alertController addAction:action2];    [alertController addAction:action3];

//添加文本框到提示框中(只适合提示框风格为:UIAlertControllerStyleAlert)

//添加文本框(只适合alertview类型的提示框)    [alertController addTextFieldWithConfigurationHandler:^(UITextField *textField) {        textField.placeholder = @"账号";    }];    [alertController addTextFieldWithConfigurationHandler:^(UITextField *textField) {        textField.placeholder = @"密码";        textField.secureTextEntry = YES; //安全输入模式    }];

//给文本框添加监听事件

//给文本框添加监听事件(文本框的开始、结束、状态改变等)    [alertController addTextFieldWithConfigurationHandler:^(UITextField *textField) {        textField.placeholder = @"添加监听事件";                [textField addTarget:self action:@selector(alertTextFiledDidChanged:) forControlEvents:UIControlEventEditingChanged];    }];

//以模态窗口的形式显示提示框

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

//实现文本框事件

#pragma mark 文本框监听事件-(void)alertTextFiledDidChanged:(NSNotification *)notification{    NSLog(@"Enditing changed");}

 

//点击按钮,显示演示结果

当没有添加action3按钮到提示框,即按钮个数<=2时,两种提示框的样式截图为:

UIAlertControllerStyleAlert:从屏幕中间弹出

 

UIAlertControllerStyleActionSheet:从屏幕底部弹出(不能添加文本框)

 

 

当没有添加action3按钮到提示框,即按钮个数>=3时,两种提示框的样式截图为:

UIAlertControllerStyleAlert:从屏幕中间弹出

UIAlertControllerStyleActionSheet:从屏幕底部弹出(不能添加文本框)

转载地址:http://wfpwo.baihongyu.com/

你可能感兴趣的文章
Ajax
查看>>
Spring3 MVC请求参数获取的几种方法
查看>>
[物理学与PDEs]第2章习题1 无旋时的 Euler 方程
查看>>
快速复习正则表达式
查看>>
jquery 与其他库冲突解决方案
查看>>
ny82 迷宫寻宝(一) map+queue
查看>>
【转】使用genstring和NSLocalizedString实现App文本的本地化
查看>>
[51单片机] EEPROM 24c02 [读取存储多字节]
查看>>
cocos2d-x项目101次相遇:使用触摸事件移动 精灵
查看>>
[再寄小读者之数学篇](2014-05-29 单调函数的一个充分条件)
查看>>
RDD的依赖关系
查看>>
Android开发学习---使用Intelij idea 13.1 进行android 开发
查看>>
AddChild
查看>>
Android的移动存储之SharedPreferences
查看>>
padding与margin的差别
查看>>
Icehouse 创建Instance代码分析
查看>>
iOS开发多线程篇—GCD介绍
查看>>
单元测试 逃不开的Done 与约定
查看>>
解决parseSdkContent failed java.lang.NullPointerException错误
查看>>
正确的 zip 压缩与解压代码
查看>>