標籤:
本文轉載至 http://www.aichengxu.com/view/35326
UIAlertView及UIActionSheet在ios8中被放棄,其功能將完全由UIAlertController代替:
1.Alert用法
UIAlertController *alert = [UIAlertControlleralertControllerWithTitle:@"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");
}]];
[alert addTextFieldWithConfigurationHandler:^(UITextField *textField) {
UITextField * tf = [[UITextField alloc]initWithFrame:CGRectMake(0, 0, 80, 30)];
}];
[self presentViewController:alert animated:YES completion:nil];
2,actionsheet用法
UIAlertController *alertController = [UIAlertController alertControllerWithTitle:nil message:nilpreferredStyle:UIAlertControllerStyleActionSheet];
[alertController addAction:[UIAlertAction actionWithTitle:@"111"
style:UIAlertActionStyleDefault
handler:^(UIAlertAction *action) {
NSLog(@"111");
}]];
[alertController addAction:[UIAlertAction actionWithTitle:@"222"
style:UIAlertActionStyleCancel
handler:^(UIAlertAction *action) {
NSLog(@"222");
}]];
[self presentViewController:alertController animated:YES completion:nil];
版本判斷語句
#define iOS(version) (([[[UIDevice currentDevice] systemVersion] intValue] >= version)?1:0)
可進行判斷添加alertController或是aletView和actionsheet
3.新的問題,當在ios8下做好判斷之後,返回ios7或ios6運行xcode,報錯-------
原因:UIAlertController只在ios8下的架構裡由此檔案,ios7及以下版本沒有,但編譯的時候還是會進行編譯(雖然運行時不走這部分代碼)
解決方案:編譯時間進行判斷,只有在ios8SDK下編譯此部分
#if __IPHONE_OS_VERSION_MAX_ALLOWED >= 80000
"alertcontroller相關代碼"
#endif
重新運行xcode,ok,可以正常運行了.
UIAlertView及UIActionSheet 在ios8極其以下版本的相容問題解決方案