2016-08-16 4 views
0

Привет, я переношу старый проект iOS. Я получил эту ошибку из моей новой строки кода из вспомогательного класса ApiManager.m (сетевой вызов)«Приложение попыталось представить nil modal view controller on target» Ошибка на iOS7 и ниже

UIAlertController *alert = [UIAlertController alertControllerWithTitle:NO_INTERNET_ERROR_TITLE message:TRACKED_ITEM_NOT_FOUND_ERROR preferredStyle:UIAlertControllerStyleAlert]; 
UIAlertAction *ok = [UIAlertAction actionWithTitle:@"OK" style:UIAlertActionStyleDefault handler:nil]; 
[alert addAction:ok]; 
[[UIApplication sharedApplication].keyWindow.rootViewController presentViewController:alert animated:YES completion:nil]; 

ошибка:

016-08-16 13: 52: 49,955 SINGPOST [967: 60b] *** Нагрузочный приложение из-за неперехваченное исключение 'NSInvalidArgumentException', причина: «Применение попытался представить ноль modal view controller на цель . '

Проблема возникает только на iOS 7 и ниже. С версии 8 и выше ничего плохого. Как это исправить? Любая помощь очень ценится. Благодаря!

ответ

1

В соответствии с прошивкой вы должны использовать UIAlertView и UIAlertController:

if(SYSTEM_VERSION_LESS_THAN(@"8.0")) 
{ 
    alert = [[UIAlertView alloc] initWithTitle:@"Warning" message:@"Invalid Coupon." delegate:self cancelButtonTitle:@"OK" otherButtonTitles:nil]; 
     [alert show]; 
} 
     else 
     { 
     UIAlertController *alertController = [UIAlertController alertControllerWithTitle:@"Warning" message:@"Invalid Coupon." preferredStyle:UIAlertControllerStyleAlert]; 


     UIAlertAction *okAction = [UIAlertAction 
            actionWithTitle:NSLocalizedString(@"OK", @"OK action") 
            style:UIAlertActionStyleDefault 
            handler:^(UIAlertAction *action) 
            { 

            }]; 

     [alertController addAction:okAction]; 

     [self presentViewController:alertController animated:YES completion:nil]; 
    } 
1

Проблема возникает на IOS 7, потому что UIAlertController как док говорит https://developer.apple.com/library/ios/documentation/UIKit/Reference/UIAlertController_class/

Доступно в прошивкой 8.0 и поздняя

Для прошивкой 7 вам нужно использовать UIAlertView

+0

Спасибо за информацию. Должна ли мы по-прежнему поддерживать IOS 7 на данный момент. Должен ли я перемещать цель развития до 8.0? –

+0

Если вы перестанете поддерживать пользователей с iOS 7, я думаю, что да, вы можете изменить цель разработки до 8.0 – iSashok

+0

Я имею в виду, следует ли нам поддерживать код поддержки IOS7 или полностью остановить поддержку (изменить цель на 8,0)? в августе 2016 года? Много ли у пользователей iOS 7? –