?UIAlertController是iOS8推出的新概念斑唬,取代了以前的 UIAlertView和UIActionSheet(現(xiàn)在仍可使用相味,但會(huì)有警告)。
UIAlertController 替代了 UIAlertView 和 UIActionSheet,擁有他們兩個(gè)所有的功能脊串,從系統(tǒng)層級(jí)上統(tǒng)一了 alert 的概念 —— 即以 modal 方式或 popover 方式展示凉泄。
UIAlertController 是 UIViewController 的子類躏尉,而非其先前的方式。因此新的 alert 可以由 view controller 展示相關(guān)的配置中獲益很多后众。
UIAlertController 不管是要用 alert 還是 action sheet 方式展示胀糜,都要以 title 和 message 參數(shù)來(lái)初始化。Alert 會(huì)在當(dāng)前顯示的 view controller 中心以模態(tài)形式出現(xiàn)吼具,action sheet 則會(huì)在底部滑出僚纷。Alert 可以同時(shí)有按鈕和輸入框,action sheet 僅支持按鈕拗盒。
新的方式并沒(méi)有把所有的 alert 按鈕配置都放在初始化函數(shù)中怖竭,而是引入了一個(gè)新類 UIAlertAction 的對(duì)象,在初始化之后可以進(jìn)行配置陡蝇。這種形式的 API 重構(gòu)讓對(duì)按鈕數(shù)量痊臭、類型、順序方便有了更大的控制登夫。同時(shí)也棄用了 UIAlertView 和 UIActionSheet 使用的delegate 這種方式广匙,而是采用更簡(jiǎn)便的完成時(shí)回調(diào)。
一)新舊對(duì)比:
1.標(biāo)準(zhǔn)的Alert Sheet樣式:
舊方法:UIActionSheet:
UIActionSheet *actionSheet = [[UIActionSheet alloc]initWithTitle:@"點(diǎn)擊的是代言按鈕"
delegate:self
cancelButtonTitle:@"取消"destructiveButtonTitle:@"輕斟淺醉17好帥"otherButtonTitles:@"輕斟淺醉17真的好帥", nil];[actionSheet showInView:self.view];
新方法:UIAlertController
UIAlertController *alertController = [UIAlertController alertControllerWithTitle:@"點(diǎn)擊的是代言按鈕"message:nil
preferredStyle:UIAlertControllerStyleActionSheet];
UIAlertAction *cancelAction = [UIAlertAction actionWithTitle:@"取消" style:UIAlertActionStyleCancel handler:nil];
[alertController addAction:cancelAction];
UIAlertAction *moreAction = [UIAlertAction actionWithTitle:@"輕斟淺醉17好帥" style:UIAlertActionStyleDestructive handler:nil];
[alertController addAction:moreAction];
UIAlertAction *OKAction = [UIAlertAction actionWithTitle:@"輕斟淺醉17真的好帥" style:UIAlertActionStyleDefault handler:nil];
[alertController addAction:OKAction];
[self presentViewController:alertController animated:YES completion:nil];
2.標(biāo)準(zhǔn)的Alert樣式:
舊方法:UIAlertView:
UIAlertView *alertView = [[UIAlertView alloc]initWithTitle:@"點(diǎn)擊的是代言按鈕"
message:@"輕斟淺醉17好帥"delegate:self cancelButtonTitle:@"就是帥" otherButtonTitles:@"沒(méi)錯(cuò)", nil];
//顯示alertView
[alertView show];
新方法:UIAlertController:
UIAlertController *alert = [UIAlertController alertControllerWithTitle:@"點(diǎn)擊的是代言按鈕"
message:@"輕斟淺醉17好帥"preferredStyle:UIAlertControllerStyleAlert ];
UIAlertAction *Action = [UIAlertAction actionWithTitle:@"就是帥" style:UIAlertActionStyleDefault handler:nil];
[alert addAction:Action];
UIAlertAction *Action1 = [UIAlertAction actionWithTitle:@"沒(méi)錯(cuò)" style:UIAlertActionStyleDefault handler:nil];
[alert addAction:Action1];
[self presentViewController:alert animated:YES completion:nil];
UIAlertController還可以設(shè)置多個(gè)Alert
再有2個(gè)以內(nèi)操作的時(shí)候恼策,按鈕會(huì)水平排布鸦致。更多按鈕的情況,就會(huì)像 action sheet 那樣展示