Попытка отклонить из контроллера просмотра, пока выполняется презентация или увольнение

У меня есть TWO UIViewController классы, где в FirstClass у меня есть UIButton для Вход, когда пользователь нажимает кнопку, я покажу SecondClass... Для этого я сделали,

SecondClass *index = [[SecondClass alloc] init];
[self presentModalViewController:index animated:YES];

В SecondClass у меня есть кнопка logout, которая будет перенаправлена ​​на FirstClass, для этого я сделал,

[self dismissModalViewControllerAnimated:YES];

Когда я нажимаю кнопку "Выход" в SecondClass, я получаю сообщение msg

**Attempt to dismiss from view controller <FirstClass: 0e39w88e160> while a presentation or dismiss is in progress!**

В чем проблема здесь.

Ответ 1

Добавлены ответы iOS 6 и pre-iOS 6:

iOS 5.0 и более поздние версии

Когда вы выходите из системы, добавьте эту проверку перед увольнением:

if (![self.presentedViewController isBeingDismissed])
{
    [self dismissModalViewControllerAnimated:YES completion:nil];
}

iOS 4.X и менее

Добавьте эту проверку перед увольнением:

if (![[self modalViewController] isBeingDismissed])
{
    [self dismissModalViewControllerAnimated:YES];
}

Ответ 2

Вызовите эти строки, где вы выходите из системы, а затем проверьте:

if (![[self modalViewController] isBeingDismissed])
{
   [self dismissModalViewControllerAnimated:YES];
}

Ответ 3

Есть много вещей, которые могут вызвать это, вот несколько вариантов:

  • Вы забыли позвонить супер по одному из методов ViewController, таких как viewWillAppear, viewWillAppear и т.д. Обратитесь к документации UIViewController, чтобы узнать, когда вам нужно позвонить супер.
  • Метод rejectModalViewControllerAnimated: вызывается более одного раза, это может произойти, если вы добавили цель в UIButton более одного раза.

Чтобы лучше понять проблему, полностью вставьте код обоих контроллеров представления.