将导航控制器用于 uipopoverview 的最佳方式
Posted
技术标签:
【中文标题】将导航控制器用于 uipopoverview 的最佳方式【英文标题】:Best way to use navigation controller for uipopoverview 【发布时间】:2013-08-23 08:17:56 【问题描述】:我想从popoverview
推送到另一个视图。为此,我有一个导航控制器到那个弹出窗口。而且它的工作正常。
问题出现在第二个视图中。为了允许用户发送电子邮件,我展示了一个邮件编辑器。但我得到了两个导航控制器。
这是第一个popoverview的代码:
SettingsVC *vc = [self.storyboard instantiateViewControllerWithIdentifier:@"SettingsVC"];
vc.delegate = self;
UINavigationController *naviCon = [[UINavigationController alloc]initWithRootViewController:vc];
self.settingsPopover = [[UIPopoverController alloc] initWithContentViewController:naviCon];
CGRect frame = CGRectMake(974.f, 36.f, 0, 0);
self.settingsPopover.popoverContentSize = CGSizeMake(300, 250);
[self.settingsPopover presentPopoverFromRect:frame inView:self.view permittedArrowDirections:UIPopoverArrowDirectionUp animated:YES];
【问题讨论】:
尝试在弹出框内以模态方式呈现邮件编辑器 如何在弹出框内显示邮件编辑器? @铍[self presentViewController:mailComposer animated:YES completion:];
使用了相同的代码,但我在主视图而不是 popoverview 中获取 mailcomposer
因为您需要不在主视图中调用它 - 您必须在 在弹出框内容中进行调用。我猜这是一个SettingsVC。在我的示例中,self
表示将显示新模态控制器的位置。
【参考方案1】:
当我需要类似的东西时,我从 ViewController 调用了 MFMailComposeViewController,它调用了 PopoverController(父 ViewController),并且还在该 ViewController 中包含了委托等。 我在 PopoverViewController 的 ContentViewController 中定义了一个协议,它在需要调用 MFMailComposeViewController 时通知父 ViewController。 一切都完美无缺...希望对您有所帮助
【讨论】:
当我调用 MFMailComposeViewController 时,我在其他视图中遇到了同样的问题。如果我没有在弹出窗口中使用导航,它的工作正常,否则我会得到两个导航控制器以上是关于将导航控制器用于 uipopoverview 的最佳方式的主要内容,如果未能解决你的问题,请参考以下文章
UIPopoverview for iPhone,iOS 7