Отпускать 2 модальных диалога одновременно? - PullRequest
0 голосов
/ 23 февраля 2012

Мой rootviewcontroller в моем приложении для iPad представляет модальный viewcontroller через [self presentModalViewController:... animated:YES] (назовем его ViewControllerA).

В какой-то момент сам ViewControllerA представляет MFMailComposeViewController через [self presentModalViewController:... animated:YES].

В методе делегата mailComposeController:didFinishWithResult:error: Я хочу отклонить ОБА контроллеров, MFMailComposeViewController AND ViewControllerA.

Но что бы я ни пытался ([self.parentViewController dismissModalViewControllerAnimated:YES], [self dismissModalViewControllerAnimated:YES], дважды вызывая dismiss), ТОЛЬКО MFMailComposeViewController отклоняется, но ViewControllerA остается видимым.

Я уже нашел этоpost (/2819210/otkazatsya-ot-neskolkih-kontrollerov-modalnogo-vida-odnovremenno) и этот post (/2397792/kak-pereiti-k-pervomu-viewcontroller-iz-poslednego-kontrollera-view-sredi-neskolkih-kontrollerov-view),), но предлагаемые решения не работают для меня.

Что я делаю не так?

1 Ответ

1 голос
/ 05 июля 2013

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

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

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

- (void)mailComposeController:(MFMailComposeViewController*)controller didFinishWithResult:(MFMailComposeResult)result error:(NSError*)error
{
    switch (result) {
        case MFMailComposeResultSent:
            [self dismissModalViewControllerAnimated:NO];

            if (![[self modalViewController] isBeingDismissed])
                [self dismissModalViewControllerAnimated:YES];
        default:
            break;    
    }
}
...