UIAlertView及UIActionSheet在ios8中被放棄,其功能將徹底由UIAlertController代替:php
1.Alert用法ios
UIAlertController *alert = [UIAlertControlleralertControllerWithTitle:@"This is Title"xcode
message:@"This is message"框架
preferredStyle:UIAlertControllerStyleAlert];ui
[alert addAction:[UIAlertAction actionWithTitle:@"Action 1 (Default Style)"url
style:UIAlertActionStyleDefaultspa
handler:^(UIAlertAction *action) {code
NSLog(@"Action 1 Handler Called");get
}]];it
[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,能夠正常運行了.