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,能够正常运行了.