UIAlertController выдает сообщение об ошибке консоли

у меня есть следующий код для представления сообщения об ошибке в UIAlertController в IOS 13. Он отлично работал в IOS 11, но теперь я получаю сообщение об ошибке консоли, как показано ниже. Может кто-нибудь посоветовать, как это можно исправить, спасибо.

-(void)errorMessage
    {

    UIAlertController* alert = [UIAlertController alertControllerWithTitle:NSLocalizedString(@"Information",information)
                                                                   message:displaymessage
                                                            preferredStyle:UIAlertControllerStyleAlert];

    UIAlertAction* defaultAction = [UIAlertAction actionWithTitle:NSLocalizedString(@"OK",ok)
                                                            style:UIAlertActionStyleDefault
                                                          handler:^(UIAlertAction * action) {}];

    [alert addAction:defaultAction];

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


}

ошибка:

> 2020-04-18 00:19:07.958139+0100 TrigCalculator[9298:636378] Warning:
> Attempt to present <UIAlertController: 0x7fa448043200>  on
> <UITabBarController: 0x7fa44b008200> which is already presenting
> <UIAlertController: 0x7fa44787fc00>

person superllanboy    schedule 17.04.2020    source источник


Ответы (1)


после дальнейшего изучения этой проблемы я обнаружил, что моя логика в другом месте потенциально может привести к одновременному отображению двух предупреждающих сообщений. Я не хотел реструктурировать свою логику, поэтому обнаружил, что следующая поправка к моему коду работает. предыдущие версии Xcode не жаловались на это, но последняя версия обнаружила проблему и выдала предупреждение.

if (self.presentedViewController != nil)
{[self.presentingViewController dismissViewControllerAnimated:true completion:nil];}
else
{
[self presentViewController:alert animated:YES completion:nil];
}

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

Благодарность

person superllanboy    schedule 18.04.2020