一次解除2个模态对话框?

时间:2012-02-22 20:28:44

标签: ios ipad uiviewcontroller presentmodalviewcontroller

我的iPad应用程序中的rootviewcontroller通过[self presentModalViewController:... animated:YES]呈现模态viewcontroller(我们称之为ViewControllerA)。

在某些时候,ViewControllerA本身会通过MFMailComposeViewController呈现[self presentModalViewController:... animated:YES]

在委托方法mailComposeController:didFinishWithResult:error:中,我想解雇控制器,MFMailComposeViewController和ViewControllerA。

但无论我尝试什么([self.parentViewController dismissModalViewControllerAnimated:YES][self dismissModalViewControllerAnimated:YES],两次调用dismiss),只有MFMailComposeViewController被解雇,但ViewControllerA仍然可见。

我已经发现这篇文章(http://stackoverflow.com/questions/3229755/dismissing-multiple-modal-view-controllers-at-once)和这篇文章(http://stackoverflow.com/questions/3105855 /如何移动到第一个视图控制器 - 从最后一个视图 - 控制器 - 在多个视图中),但建议的解决方案似乎不适合我。

我做错了什么?

1 个答案:

答案 0 :(得分:1)

我有同样的问题解雇多个模态视图 可能你收到了警告:

  

在演示或解雇过程中尝试从视图控制器中解除

解决方案是在没有动画的情况下关闭第一个视图,然后关闭另一个视图。最后一个可以使用动画解散,没有问题。

- (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;    
    }
}