//UIActionSheet is deprecated. Use UIAlertController with a preferredStyle of UIAlertControllerStyleActionSheet instead
UIActionSheet弃用。使用UIAlertController preferredStyle UIAlertControllerStyleActionSheet替换。
//UIAlertView is deprecated. Use UIAlertController with a preferredStyle of UIAlertControllerStyleAlert instead
UIAlertView弃用。使用UIAlertController preferredStyle UIAlertControllerStyleAlert替换
UIAlertController同时替代了 UIAlertView 和 UIActionSheet
UIAlertController对象向用户显示一个警告消息。这个类替换UIActionSheet和UIAlertView类显示警报。
使用警报控制器后必须设置行为和风格,目前使用presentViewController:animated:completion:方法。
除了向用户提示一个消息,你还可以做其他事情。为每个控件添加addAction:方法,监听动作细节。
当用户操作时,UIAlertController创建动作对象时,执行block中内容。
官方使用样例:
UIAlertController* alert = [UIAlertController alertControllerWithTitle:@"My Alert"
message:@"This is an alert."
preferredStyle:UIAlertControllerStyleAlert];
UIAlertAction* defaultAction = [UIAlertAction actionWithTitle:@"OK" style:UIAlertActionStyleDefault
handler:^(UIAlertAction * action) {}];
[alert addAction:defaultAction];
[self presentViewController:alert animated:YES completion:nil];
UIActionSheet使用
UIAlertControllerStyleActionSheet的使用注意
1.不能有文本框
2.在iPad中,必须使用popover的形式展示
UIAlertController *alert = [UIAlertController alertControllerWithTitle:@"警告" message:@"你有严重的精神病,赶紧去治疗" preferredStyle:UIAlertControllerStyleActionSheet];
// 设置popover指向的item
alert.popoverPresentationController.barButtonItem = self.navigationItem.leftBarButtonItem;
// 添加按钮
[alert addAction:[UIAlertAction actionWithTitle:@"确定" style:UIAlertActionStyleDestructive handler:^(UIAlertAction *action) {
NSLog(@"点击了确定按钮");
}]];
[alert addAction:[UIAlertAction actionWithTitle:@"取消" style:UIAlertActionStyleCancel handler:^(UIAlertAction *action) {
NSLog(@"点击了取消按钮");
}]];
[self presentViewController:alert animated:YES completion:nil];
Text fields can only be added to an alert controller of style UIAlertControllerStyleAlert
只能在UIAlertControllerStyleAlert样式的view上添加文本框
UIAlertView使用
// 危险操作:弹框提醒
// 1.UIAlertView
// 2.UIActionSheet
// iOS8开始:UIAlertController == UIAlertView + UIActionSheet
UIAlertController *alert = [UIAlertController alertControllerWithTitle:@"警告" message:@"你有严重的精神病,赶紧去治疗" preferredStyle:UIAlertControllerStyleAlert];
// 添加按钮
__weak typeof(alert) weakAlert = alert;
[alert addAction:[UIAlertAction actionWithTitle:@"确定" style:UIAlertActionStyleDestructive handler:^(UIAlertAction *action) {
NSLog(@"点击了确定按钮--%@-%@", [weakAlert.textFields.firstObject text], [weakAlert.textFields.lastObject text]);
}]];
[alert addAction:[UIAlertAction actionWithTitle:@"取消" style:UIAlertActionStyleCancel handler:^(UIAlertAction *action) {
NSLog(@"点击了取消按钮");
}]];
// 添加文本框
[alert addTextFieldWithConfigurationHandler:^(UITextField *textField) {
textField.textColor = [UIColor redColor];
textField.text = @"123";
[textField addTarget:self action:@selector(usernameDidChange:) forControlEvents:UIControlEventEditingChanged];
// [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(usernameDidChange:) name:UITextFieldTextDidChangeNotification object:textField];
}];
[alert addTextFieldWithConfigurationHandler:^(UITextField *textField) {
textField.secureTextEntry = YES;
textField.text = @"123";
}];
[self presentViewController:alert animated:YES completion:nil];
- (void)usernameDidChange:(UITextField *)username
{
NSLog(@"%@", username.text);
}
ios8之前用法
UIActionSheet *sheet = [[UIActionSheet alloc] initWithTitle:@"警告:你有严重的精神病,赶紧去治疗" delegate:nil cancelButtonTitle:@"取消" destructiveButtonTitle:@"确定"
otherButtonTitles:@"关闭", nil];
[sheet showInView:self.view];
UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"警告" message:@"你有严重的精神病,赶紧去治疗" delegate:nil cancelButtonTitle:@"取消" otherButtonTitles:@"确定", nil];
alert.alertViewStyle = UIAlertViewStyleLoginAndPasswordInput;
[alert show];
感谢李明杰老师。