1.我為什么要寫這篇博客記錄它?
答:因為 UIAlertView和UIActionSheet 被划線了 蘋果不推薦我們使用這兩個類了,也不再進行維護和更新,為了以后方便使用我來記錄一下。如圖所示
正如蘋果所說它現在讓我們用UIAlertConntroller(其實iOS 8.0就可以使用這個類了) 並設置樣式為UIAlertcontrollerStyleAlert 就是原來的UIAlertView了,同理UIAlertcontrollerStyleActionSheet就是UIActionSheet。
2.那如果繼續使用UIAlertView 和 UIActionSheet 這兩個控件會不會有問題? 該如何選擇使用哪個呢?
答:繼續使用不會有問題,就像以前過期的API一樣 我們一樣可以使用,但是蘋果不會對其進行更新和維護了,就是說可能以后會有新功能,或者bug 蘋果都不會對這兩個控件進行更新了。對於選擇,個人認為蘋果既然取代了這兩個類肯定是有原因的,可能是控件拓展起來不便,也可能是維護起來繁瑣,使用起來麻煩等等吧,既然蘋果推薦我們用UIAlertController 那我們就乖乖用好了。況且我用過發現比以前那兩個控件好用很多。
3.怎么使用UIAlertController呢?
答:廢話不多說直接上代碼。如下所示:
/*
類方法快速創建一個提示控制器 值得注意的是這個控制器有個preferreStyle屬性你可以根據這個屬性來確定是使用UIAlertView 還是 UIActionSheet
UIAlertControllerStyleActionSheet
UIAlertControllerStyleAlert
*/
UIAlertController *alertController = [UIAlertController alertControllerWithTitle:@"顯示的標題" message:@"標題的提示信息" preferredStyle:UIAlertControllerStyleAlert];
[alertController addAction:[UIAlertAction actionWithTitle:@"取消" style:UIAlertActionStyleCancel handler:^(UIAlertAction * _Nonnull action) {
NSLog(@"點擊取消");
}]];
[alertController addAction:[UIAlertAction actionWithTitle:@"確定" style:UIAlertActionStyleDefault handler:^(UIAlertAction * _Nonnull action) {
NSLog(@"點擊確認");
}]];
[alertController addAction:[UIAlertAction actionWithTitle:@"警告" style:UIAlertActionStyleDestructive handler:^(UIAlertAction * _Nonnull action) {
NSLog(@"點擊警告");
}]];
[alertController addTextFieldWithConfigurationHandler:^(UITextField * _Nonnull textField) {
NSLog(@"添加一個textField就會調用 這個block");
}];
// 由於它是一個控制器 直接modal出來就好了
[self presentViewController:alertController animated:YES completion:nil];
4.UIAlertController有什么好處?
答:省去了繁瑣的代理方法,原來的控件點擊每個功能按鈕調用方法 還得調用代理方法 要不然就是自己封裝一下,現在好了 由一個控制器來管理 操作方便了些 而且每個功能鍵都很清晰,點擊調用的方法都寫在block回調中這樣方便了很多不是嗎? 而且將原來的兩個控件合二為一。我們可以自行再次對其封裝 使用會更加方便。