IOS SDK详解之UIAlertController(IOS8之后替代AlertView和Action

原创Blog,转载请注明出处 blog.csdn.net/hello_hwc

前言:有两个月左右没为公司开发IOS项目了(最近一直在搞IOT),以至于对IOS 8的这个更新都没看到。这里补上。

一 概述

在IOS8之后,,UIAlertController替代了UIActionSheet和UIAlertView。把两种类型的提示信息放到这一个类里来实现。 注意, 这个class不能通过继承的方式来自定义。

二 类介绍

先举两个使用的例子 例子一

UIAlertController * alertController = [UIAlertController alertControllerWithTitle: nilmessage: nilpreferredStyle:UIAlertControllerStyleActionSheet];//添加Button[alertController addAction: [UIAlertAction actionWithTitle: @”拍照” style: UIAlertActionStyleDefault handler:^(UIAlertAction *action) {//处理点击拍照}]];[alertController addAction: [UIAlertAction actionWithTitle: @”从相册选取” style: UIAlertActionStyleDefault handler:^(UIAlertAction *action){//处理点击从相册选取}]];[alertController addAction: [UIAlertAction actionWithTitle: @”取消” style: UIAlertActionStyleCancel handler:nil]];[self presentViewController: alertController animated: YES completion: nil];

例子二

实现代码

UIAlertController * alertController = [UIAlertController alertControllerWithTitle: @”登陆”message: @”输入用户名密码”preferredStyle:UIAlertControllerStyleAlert];[alertController addTextFieldWithConfigurationHandler:^(UITextField *textField) {textField.placeholder = @”name”;textField.textColor = [UIColor blueColor];textField.clearButtonMode = UITextFieldViewModeWhileEditing;textField.borderStyle = UITextBorderStyleRoundedRect;}];[alertController addTextFieldWithConfigurationHandler:^(UITextField *textField) {textField.placeholder = @”password”;textField.textColor = [UIColor blueColor];textField.clearButtonMode = UITextFieldViewModeWhileEditing;textField.borderStyle = UITextBorderStyleRoundedRect;textField.secureTextEntry = YES;}];[alertController addAction:[UIAlertAction actionWithTitle:@”OK” style:UIAlertActionStyleDefault handler:^(UIAlertAction *action) {NSArray * textfields = alertController.textFields;UITextField * namefield = textfields[0];UITextField * passwordfiled = textfields[1];NSLog(@”%@:%@”,namefield.text,passwordfiled.text);}]];[self presentViewController:alertController animated:YES completion:nil];三 使用的步骤

第一步 初始化

+ (*)

这里的preferredStyle有两种,sheet和alert

typedef enum UIAlertControllerStyle: NSInteger { UIAlertControllerStyleActionSheet = 0, UIAlertControllerStyleAlert } UIAlertControllerStyle;

第二步,添加Action(button或者textfield) 添加Button – (void)addAction:(UIAlertAction *)action 这里的UIAlertAction是一个比较简单的类

+ ((^)(UIAlertAction *action))handler

style有三种

typedef enum UIAlertActionStyle: NSInteger { UIAlertActionStyleDefault = 0,//默认 UIAlertActionStyleCancel,//取消 UIAlertActionStyleDestructive //有可能改变或者数据} UIAlertActionStyle;

添加TextField 注意,只能是 UIAlertControllerStyleAlert才能添加Textfield

– (void)addTextFieldWithConfigurationHandler:(void (^)(UITextField *textField))configurationHandler

在block里配置textfield的信息,例如placeholder,backgroundcolor等。 Textfield的保存信息可由UIAlertController的属性Textfields获得。如同上述的例子二一样。

第三步,显示 例如

[self presentViewController:alert animated:YES completion:nil];总结:

总的来说,API把两种Alertview进行统一,并且不用代理的方式来传递消息。而是改成了block。就个人而言,还是比较喜欢Block的方式的。上述的两幅图的背景请忽略,那是我准备写另一篇关于拍照博客的Demo工程。

友谊之花、爱情之树、以及遗憾之泪!

IOS SDK详解之UIAlertController(IOS8之后替代AlertView和Action

相关文章:

你感兴趣的文章:

标签云: