2015-10-05 2 views
15

UAlertView устарел в iOS 9 и более поздних версиях. Что было бы альтернативой?Альтернатива UIAlertView для iOS 9?

UIAlertView *new = [[UIAlertView alloc] initWithTitle:@"Success" message:@"Your InApp Purchases were successfully restored" delegate:nil cancelButtonTitle:@"OK" otherButtonTitles:nil]; 
[new show]; 
+1

Любая причина вы не просто выглядит в документах для 'UIAlertView' (который говорит вам точно, что делать) или выполнить поиск, прежде чем публиковать этот вопрос? Пожалуйста, попытайтесь найти ответ перед публикацией. – rmaddy

+0

, если вы не нашли ответ в своем документе, лучше смените свой проект на iOS 8.: P –

ответ

45

Вы можете использовать этот код, чтобы заменить предупредительный вид:

UIAlertController *alertController = [UIAlertController alertControllerWithTitle:@"Title" message:@"Message" preferredStyle:UIAlertControllerStyleAlert];   
[alertController addAction:[UIAlertAction actionWithTitle:@"OK" style:UIAlertActionStyleDefault handler:nil]]; 
[self presentViewController:alertController animated:YES completion:nil]; 

Если вам нужно несколько действий, которые вы можете использовать:

UIAlertController *alertController = [UIAlertController alertControllerWithTitle:@"Title" message:@"Message" preferredStyle:UIAlertControllerStyleAlert]; 
[alertController addAction:[UIAlertAction actionWithTitle:@"Button 1" style:UIAlertActionStyleDefault handler:^(UIAlertAction *action) { 
    // action 1 
}]]; 
[alertController addAction:[UIAlertAction actionWithTitle:@"Button 2" style:UIAlertActionStyleDefault handler:^(UIAlertAction *action) { 
    // action 2 
}]]; 
[alertController addAction:[UIAlertAction actionWithTitle:@"Cancel" style:UIAlertActionStyleDefault handler:^(UIAlertAction *action) { 
    [self dismissViewControllerAnimated:YES completion:nil]; 
}]];   
[self presentViewController:alertController animated:YES completion:nil]; 
+1

Это требует большого количества кода для реализации ... О чем они думают? Однако способность обрабатывать ответы без делегата является приятным дополнением. –

+0

@ Kundapra Hudga, почему вы решили использовать dispatch_async для [self presentViewController: alertController animated: YES complete: nil]; ? – Adela

+0

Вы используете UIAlertController, см. Руководство Swift AlertController: https://iosdevcenters.blogspot.com/2016/03/uialertcontroller-in-swift.html –

1
UIAlertController * alert= [UIAlertController 
            alertControllerWithTitle:@"My Title" 
            message:@"Enter User Credentials" 
            preferredStyle:UIAlertControllerStyleAlert]; 

    [self presentViewController:alert animated:YES completion:nil]; 
9

Вы часто подробную информацию, включая замену предложению щелчок на символе, который отображает декларацию класса/метода.

В случае UIAlertView вы увидите

"UIAlertView осуждается. Используйте UIAlertController с preferredStyle из UIAlertControllerStyleAlert вместо"

1

У меня есть использование "UIAlertController" на прошивке 8 и более поздние. Пусть см:

UIAlertController *alertController = [UIAlertController alertControllerWithTitle:@"Success" message:@"Your InApp Purchases were successfully restored" preferredStyle:UIAlertControllerStyleAlert]; 

И добавить кнопки:

UIAlertAction *okAction = [UIAlertAction actionWithTitle:@"OK" style:UIAlertActionStyleDefault handler:^(UIAlertAction *action){ 
      //do something when click button 
}]; 

Помните:

[alertController addAction:okAction]; 

Тогда показать:

[self presentViewController:alertController animated:YES completion:nill]; 

Если вы хотите, чтобы показать actionsheep, вам изменение

"preferredStyle:UIAlertControllerStyleActionSheet" 
2
UIAlertController * alert= [UIAlertController 
          alertControllerWithTitle:@"Info" 
          message:@"You are using UIAlertController" 
           preferredStyle:UIAlertControllerStyleAlert]; 

    UIAlertAction* ok = [UIAlertAction 
        actionWithTitle:@"OK" 
        style:UIAlertActionStyleDefault 
        handler:^(UIAlertAction * action) 
        { 
         [alert dismissViewControllerAnimated:YES completion:nil]; 

        }]; 
    UIAlertAction* cancel = [UIAlertAction 
         actionWithTitle:@"Cancel" 
         style:UIAlertActionStyleDefault 
         handler:^(UIAlertAction * action) 
         { 
          [alert dismissViewControllerAnimated:YES completion:nil]; 
         }]; 
[alert addAction:ok]; 
[alert addAction:cancel]; 

[self presentViewController:alert animated:YES completion:nil];