UIAlertView及UIActionSheet 在ios8極其如下版本的兼容問題解決方案

本文轉載至 http://www.aichengxu.com/view/35326

 

 

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(008030)];

}];

[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,能夠正常運行了.
相關文章
相關標籤/搜索