iOS开发UI篇—UIAlertController简单介绍
说明:
在iOS8之后,苹果推出了UIAlertController,在功能上可以实现对UIAlertView和UIActionSheet的统一。
本文主要分为三个部分,将分别介绍UIAlertView的使用,UIActionSheet的使用和UIAlertController的使用。如果使用比较简单,就直接贴代码。
附:全文Demo程序下载地址:链接: http://pan.baidu.com/s/1nt7jZW9 密码: 4ijj
一、UIAlertView的使用
示例代码:
运行代码,屏幕显示如下:
说明:上面的代码简单介绍了UIAlertView的一些基本用法,需要注意的系统为UIAlertView提供了集中风格的样式,如UIAlertViewStyleSecureTextInput、
UIAlertViewStyleLoginAndPasswordInput等。UIAlertView需要调用show方法来让弹框显示,显示居中。
对于弹框中按钮的点击事件,采用代理的方式来监听。系统提供了一下一些代理方法可供调用。
二、UIActionSheet的使用
示例代码:
运行代码,点击屏幕显示如下:
说明:UIActionSheet的使用和UIAlertView类似,其构造方法
- (instancetype)initWithTitle:(NSString *)title delegate:(id<UIActionSheetDelegate>)delegate cancelButtonTitle:(NSString *)cancelButtonTitle destructiveButtonTitle:(NSString *)destructiveButtonTitle otherButtonTitles:(NSString *)otherButtonTitles, ... NS_REQUIRES_NIL_TERMINATION NS_EXTENSION_UNAVAILABLE_IOS("Use UIAlertController instead.");
其中destructiveButton是一种特殊样式的Button,销毁性按钮,着重强调。和UIAlertView不同的,UIActionSheet的显示调用showInView:方法,且展示在父控件的底部。
三、UIAlertController的简单介绍
UIAlertController在功能实现上通过对样式(UIAlertControllerStyle)的控制,实际上实现了UIActionSheet和UIAlertView两个控件的功能。进入到UIAlertController的头文件,可以发现UIAlertController继承自UIViewController,是一个控制器类型。
下面通过几段简短的代码进行简单说明。
(1)UIAlertControllerStyle == UIAlertControllerStyleAlert
代码示例一
执行情况如下:
说明:相比UIAlertView和UIActionSheet使用代理来监听弹框事件,UIAlertController采用了更有针对性的Block块来完成。UIAlertController可以通过addAction:方法来添加自己的按钮点击事件。还可以通过下面的方法来添加TextField控件。
- (void)addTextFieldWithConfigurationHandler:(void (^)(UITextField *textField))configurationHandler;
代码示例二
执行效果:
(2)UIAlertControllerStyle == UIAlertControllerStyleActionSheet
示例代码:
执行效果:
说明:只有当UIAlertController的样式为UIAlertControllerStyleAlert时才能接受添加TextField。如果UIAlertController的样式为UIAlertControllerStyleActionSheet,则报错。
代码示例:
错误提示:
四、与UITextField相关的补充
(1)要获取UIAlertController的TextField控件,可以有几种方法:
a)添加一个全局的UITextField属性,并在BLOCK中指向。
b)尝试新的方法。
(2)监听弹框中UITextField值的改变。可以有以下几种方法:
a)使用代理。(略)
b)使用通知。(略)
c)新的方法(UITextField继承自UIControl,因此有addTaget方法)。
代码示例:
执行效果:
监听UITextField文字的改变: