从 ChildViewController 呈现 ModalView
Posted
技术标签:
【中文标题】从 ChildViewController 呈现 ModalView【英文标题】:Present ModalView from ChildViewController 【发布时间】:2013-10-22 15:15:56 【问题描述】:在我的 rootViewController 中,单击按钮时,我会以这种方式添加一个名为 shareViewController 的 childViewController
[self addChildViewController:m_shareViewController];
[[self view] addSubview:[m_shareViewController view]];
[[[[UIApplication sharedApplication] delegate] window] addSubview:m_shareViewController.view];
[m_shareViewController didMoveToParentViewController:self];
我使用动画来显示这个视图从屏幕底部到中间出现
这个 shareViewController 有一个叫做 email 的选项,所以我在 myShareViewController.m 中写了这个
- (IBAction)email:(id)sender
MFMailComposeViewController *emailDialog = [[MFMailComposeViewController alloc] init];
[emailDialog setMailComposeDelegate:self];
if ([MFMailComposeViewController canSendMail])
[self presentModalViewController:composer animated:YES];
else
return;
//function to handle errors while sending an email
-(void)mailComposeController:(MFMailComposeViewController *)controller didFinishWithResult:(MFMailComposeResult)result error:(NSError *)error
if (error)
[self dismissViewControllerAnimated:YES completion:NULL];
else
[self dismissViewControllerAnimated:YES completion:NULL];
所以我面临的问题是 emailCompose ViewController 出现在我的 ShareViewController 后面并且变暗了。我知道为什么会这样,因为我使用“self”来展示 emailComposeVC。
但我想要的是 ShareViewController 应该呈现它。它应该在 ShareViewController 之上。
任何想法表示赞赏。
问候 兰吉特。
【问题讨论】:
您是否在提交电子邮件之前尝试关闭您的ShareViewController
撰写视图控制器?
是的,如果我这样做,它不会打开 emailVC。
尝试使用 [self presentViewController] 而不是 modalview 。如果这没有帮助,您可以通过向您的 rootVC 发送通知来实现此目的。这将关闭您的 shareVC 并显示 emailVC。
谢谢,现在可以使用了
【参考方案1】:
尝试使用 [self presentViewController] 而不是 modalview 。如果这没有帮助,您可以通过向您的 rootVC 发送通知来实现此目的。这将关闭您的 shareVC 并呈现 emailVC。 -
【讨论】:
以上是关于从 ChildViewController 呈现 ModalView的主要内容,如果未能解决你的问题,请参考以下文章
自动将事件从 ChildViewController 传递到 parentViewController
UIKit Dynamics - 从 ChildViewController 引用 UIDynamicAnimator 的问题