【发布时间】:2015-06-25 14:16:37
【问题描述】:
我有一个ViewController,它显示了一个模态视图控制器。在这个模态视图控制器中,我想展示一个MailComposeViewController。我的问题是在解雇期间。我想同时关闭两个显示的ViewController。
我的前任抓取了presentingViewController 的一个实例,发送一条消息以显示MailComposeViewController,并在BaseViewController 中关闭了模态视图控制器。
[self dismissViewControllerAnimated:YES
completion:^{
[self presentViewController:mailViewController animated:YES completion:nil];
}];
我目前试图阻止这种情况,因为它是一个神级(超过 5kloc),我需要将它拆开。
所以我尝试在模态 ViewController 中使用相同的模式,但改用了self.presentingViewController。这导致只是关闭模态 ViewController,但不显示任何内容。
在解雇之前抓取一个实例有效,但解雇的委托回调被忽略(难怪,因为模式 ViewController 不再显示)。
所以进入委托回调- (void) mailComposeController:(MFMailComposeViewController*) controller didFinishWithResult:(MFMailComposeResult) result error:(NSError*) error
我试图在没有动画的情况下在 MailComposeViewController 之前关闭模态 ViewController。这也删除了MailComposeViewController(也不足为奇)。我可以先关闭MailComposeViewController,然后关闭模态视图控制器,但这会创建一个不同的动画,其中控制器在不同的时间和顺序被关闭(我们都知道用户体验如何对类似的东西做出反应;))。
还有其他选项,我可以先关闭模态视图控制器,然后显示MailComposeViewController,而BaseViewController 中没有任何关闭代码?
谢谢:)
【问题讨论】:
标签: ios objective-c uiviewcontroller