iOS:UIAlertController和UIAlertAction的详解
提示框控制器:UIAlertController
typedef NS_ENUM(NSInteger, UIAlertControllerStyle) {
UIAlertControllerStyleActionSheet = 0, //在视图底部弹出的提示框,它不能添加文本框,而且在ipad中必须使用popover形式展示
UIAlertControllerStyleAlert //在视图中间弹出的提示框
} NS_ENUM_AVAILABLE_IOS(8_0);
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:从屏幕底部弹出(不能添加文本框)
iOS:UIAlertController和UIAlertAction的详解的更多相关文章
- iOS 视图控制器转场详解
iOS 视图控制器转场详解 前言的前言 唐巧前辈在微信公众号「iOSDevTips」以及其博客上推送了我的文章后,我的 Github 各项指标有了大幅度的增长,多谢唐巧前辈的推荐.有些人问我相关的问题 ...
- iOS 开发之照片框架详解(2)
一. 概况 本文接着 iOS 开发之照片框架详解,侧重介绍在前文中简单介绍过的 PhotoKit 及其与 ALAssetLibrary 的差异,以及如何基于 PhotoKit 与 AlAssetLib ...
- iOS中MVC等设计模式详解
iOS中MVC等设计模式详解 在iOS编程,利用设计模式可以大大提高你的开发效率,虽然在编写代码之初你需要花费较大时间把各种业务逻辑封装起来.(事实证明这是值得的!) 模型-视图-控制器(MVC)设计 ...
- iOS 证书与签名 解惑详解
iOS 证书与签名 解惑详解 分类: iPhone2012-06-06 19:57 9426人阅读 评论(1) 收藏 举报 iosxcodecryptographyappleiphone测试 目录 ...
- iOS 6分享列表——UIActivityViewController详解
iOS 6分享列表——UIActivityViewController详解 2013-06-03 01:42:33 发表评论 在iOS 6之后提供了一个分享列表视图,它通过UIActivity ...
- IOS数据库操作SQLite3使用详解(转)
iPhone中支持通过sqlite3来访问iPhone本地的数据库.具体使用方法如下1:添加开发包libsqlite3.0.dylib首先是设置项目文件,在项目中添加iPhone版的sqlite3的数 ...
- iOS 开发之照片框架详解之二 —— PhotoKit 详解(下)
本文链接:http://kayosite.com/ios-development-and-detail-of-photo-framework-part-three.html 这里接着前文<iOS ...
- iOS 开发之照片框架详解
转载自:http://kayosite.com/ios-development-and-detail-of-photo-framework.html 一. 概要 在 iOS 设备中,照片和视频是相当重 ...
- iOS 开发之照片框架详解之二 —— PhotoKit 详解(上)
转载自:http://kayosite.com/ios-development-and-detail-of-photo-framework-part-two.html 一. 概况 本文接着 iOS 开 ...
随机推荐
- C++中栈的出栈,入栈规则:A,B,C,D,E
考题: 栈底至栈顶一次存放元素 ABCD 在第五个元素E入栈之前 栈中元素可以出栈,则出栈序列可能是_____a d___________. a. ABCED b. DBCEA c. CD ...
- SQL SERVER完整、差异和事务日志备份及还原(脚本和GUI实现) [原创]
一.完整备份.差异备份和事务日志备份的脚本 --完整备份数据库 BACKUP DATABASE Test_Bak TO DISK = 'E:\20150609_75\bak\Test_bak_full ...
- 远航1617团队alpha版本分数分配与人员调动
一.根据项目开始初期的分数分配要求及项目发布后大家的讨论,我们对组内成员的分数分配如下: 刘昊岩 20.5 周 萱 20.0 林谋武 19.0 杨 帆 18.5 高小洲 21.0 谢勤政 21.5 ...
- 第一个完整的cppunit单元测试程序
在极限编程中,测试程序本应该在编写主程序之前就要写好,然后将写好的类程序放在测试程序中进行测试,但考虑到项目中需求文档等并未将接口定义好,我无从开始,而且,自己对单元测试也是刚刚熟悉,需要一边写测试程 ...
- git简单入门
git简单入门 标签(空格分隔): git git是作为程序员必备的技能.在这里就不去介绍版本控制和git产生的历史了. 首先看看常用的git命令: git init git add git comm ...
- 对LVS DR模式的理解
Client向vip发请求,lvs接收 Src mac Dst mac type … Src ip Src port Dst ip Dst port … CRC Mac1 Mac2 … … 192.1 ...
- 在线最优化求解(Online Optimization)之五:FTRL
在线最优化求解(Online Optimization)之五:FTRL 在上一篇博文中中我们从原理上定性比较了L1-FOBOS和L1-RDA在稀疏性上的表现.有实验证明,L1-FOBOS这一类基于梯度 ...
- IIS Express 及 vs2008下使用IIS Express
介绍 IIS Express 开发 ASP.NET 的应用程序是我的主要工作.当然我会选择最适合的开发环境.客户多属于企业用户,我的开发的选择,多半是 ASP.NET Web Application ...
- 如何开始你的CTF比赛之旅-网站安全-
在过去的两个星期里,我已经在DEFCON 22 CTF里检测出了两个不同的问题:“shitsco ”和“ nonameyet ”.感谢所有 的意见和评论,我遇到的最常见的问题是:“我怎么才能在CTFs ...
- nodejs快速入门
目录: 编写第一个Node.js程序: 异步式I/O和事件循环: 模块和包: 调试. 1. 编写第一个Node.js程序: Node.js 具有深厚的开源血统,它诞生于托管了许多优秀开源项目的网站—— ...