UIAlertController功能上和 UIAlertView/UIActionSheet 相同的,在ios8.0之后UIAlertController就以一种模块化替换的方式代替了这两个控件的功能和作用。是使用对话框(alertView)还是使用底部弹框(actionSheet)取决于创建控制器时如何设置首选样式的。
先看看 UIAlertView
控件的使用 -- 此控件最基本使用,是作为一个提醒弹框
// iOS 8.0后 API_DEPRECATED
// 非常简单的一种方式提供了一种提醒弹框,不继承代理,不执行 按钮的Action方法即可实现提醒功能
UIAlertView *alert = [[UIAlertView alloc]initWithTitle:@"弹框标题" message:@"弹框提示内容" delegate:nil cancelButtonTitle:@"OK" otherButtonTitles:@"取消"];
[alert show];
// UIAlertView 其他功能这里不介绍,如果有其他功能其实也是会自定义,一般也不会使用系统自带的。
UIAlertController 使用
UIAlertController 在我的一般开发中使用最多也还只是类同于 UIAlertView
功能,作为提醒弹框使用,可以执行Action的弹框使用。其他的警告框或者底部弹框也还是使用的很少。
*1,警告框/提示框
//声明alertController对象
UIAlertController *alertController=[UIAlertController alertControllerWithTitle:@"警告框标题" message:@"警告框中显示的信息" preferredStyle:UIAlertControllerStyleAlert];
//声明alertAction
UIAlertAction *cancelAction=[UIAlertAction actionWithTitle:@"取消"style:UIAlertActionStyleCancel handler:nil];
UIAlertAction *okAction=[UIAlertAction actionWithTitle:@"好的"style:UIAlertActionStyleDefault handler:nil];
UIAlertAction *deleteAction=[UIAlertAction actionWithTitle:@"删除"style:UIAlertActionStyleDestructive handler:nil];
//向alertController中加入alertAction
[alertController addAction:cancelAction];
[alertController addAction:okAction];
[alertController addAction:deleteAction];
//向self视图中加入alertController
[self presentViewController:alertController animated:YES completion:nil];
*2,文本对话框----对话框中可以进行输入相关内容如用户名或者密码等
UIAlertController *alertController = [UIAlertController alertControllerWithTitle:@"文本对话框" message:@"登录和密码对话框" preferredStyle:UIAlertControllerStyleAlert];
//声明向alertController中加入textField控件
[alertController addTextFieldWithConfigurationHandler:^(UITextField *textField){textField.placeholder = @"登录";
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector:(alertTextFielDidChanged:) name:UITextFieldDidChangedNotification object:textField];
}];
[alertController addTextFieldWithConfigurationHandler:^(UITextField *textField) {
textField.placeholder = @"密码";
textField.secureTextEntry = YES;}];
//在“好的”按钮,按下时让程序读取文本框中的值
UIAlertAction *okAction=[UIAlertAction actionWithTitle:@"好的" style:UIAlertActionStyleDefault handler:^(UIAlertAction *alertAction){
UITextField *login=alertController.textFields.firstObject;
UITextField *password=alertController.textFields.lastObject;
[[NSNotificationCenter defaultCenter] removeObserVer:self name:UITextFieldDidChangedNotification object:nil];
}];
UIAlertAction *cancelAction=[UIAlertAction actionWithTitle:@"取消"style:UIAlertActionStyleCancel handler:^(UIAlertAction *alertAction){
[[NSNotificaionCenter defaultCenter] removeObserver:self name:UITextFieldDidChangedNotification object:nil];
}];
okAction.enabled=NO;
[alertController okAction];
[alertController cancelAction];
[self presentViewController:alertcontroller animagted:YES completion:nil];
-(void)alertTextFieldDidChanged:(NSNotification*)notification{
UIAlertController *alertController = (UIAlertController *)self.presentedViewController;
if (alertController) {
UITextField *login = alertController.textFields.firstObject;
UIAlertAction *okAction = alertController.actions.lastObject;
okAction.enabled = login.text.length > 2;
}
}
*3,底部弹框
UIAlertController* alert = [UIAlertController alertControllerWithTitle:nil message:nil preferredStyle:UIAlertControllerStyleActionSheet];
UIAlertAction *cancleAction=[UIAlertAction actionWithTitle:@"取消" style:UIAlertActionStyleCancel handler:nil];
UIAlertAction *messageAction=[UIAlertAction actionWithTitle:@"短信验证登录" style:UIAlertActionStyleDefault handler:nil];
UIAlertAction *findPwdAction=[UIAlertAction actionWithTitle:@"找回密码" style:UIAlertActionStyleDefault handler:nil];
[alert addAction:findPwdAction];
[alert addAction:messageAction];
[alert addAction:cancleAction];
[self presentViewController:alert animated:YES completion:nil];
网友评论