IOS8中,Apple將UIActionSheet和UIAlertView整合成一個接口UIAlertController。
原來的是一個view,展示在window視圖之上。現在改成了controller,展示方式變成由當前的controller直接present出來。
- UIAlertController *alert = [UIAlertController alertControllerWithTitle:@This is Title
- message:@This is message
- preferredStyle:UIAlertControllerStyleAlert];
- [alert addAction:[UIAlertAction actionWithTitle:@Action 1 (Default Style)
- style:UIAlertActionStyleDefault
- handler:^(UIAlertAction *action) {
- NSLog(@Action 1 Handler Called);
- }]];
-
- [alert addAction:[UIAlertAction actionWithTitle:@Action 2 (Cancel Style)
- style:UIAlertActionStyleCancel
- handler:^(UIAlertAction *action) {
- NSLog(@Action 2 Handler Called);
- }]];
-
- [alert addAction:[UIAlertAction actionWithTitle:@Action 3 (Destructive Style)
- style:UIAlertActionStyleDestructive
- handler:^(UIAlertAction *action) {
- NSLog(@Action 3 Handler Called);
- }]];
-
- [self presentViewController:alert animated:YES completion:nil]; 通過addAction接口添加具體按鈕,設置按鈕title、style和使用block方式直接加入按鈕響應接口。
style有以下幾種:
[objc]
- UIAlertController 提示框>
- UIAlertController 提示框>
- typedef NS_ENUM(NSInteger, UIAlertActionStyle) {
- UIAlertActionStyleDefault = 0,
- UIAlertActionStyleCancel,
- UIAlertActionStyleDestructive
- } NS_ENUM_AVAILABLE_IOS(8_0);
與原來的UIActionSheet和UIAlertView比較:
1、視覺上沒有改變,跟之前的樣式保持一致;
2、改為controller方式後,控件的生命周期能夠更好的控制;方便的彈出和收起
3、當前controller彈出UIAlertController後,再次present controller必須在UIAlertController的基礎上present。present後,UIAlertController會被蓋住。而之前的UIActionSheet和UIAlertView由於是add在window上面的,當在彈出他們的controller基礎上再present controller的話,UIActionSheet和UIAlertView彈框仍然保留在最上方。
4、修改為controller方式後,接口更加簡單,而且按鈕響應方式更加明了簡介,不需要在設置delegate和實現響應的回調等。