我的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 /如何移动到第一个视图控制器 - 从最后一个视图 - 控制器 - 在多个视图中),但建议的解决方案似乎不适合我。
我做错了什么?
答案 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;
}
}