将导航控制器用于 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 的静态版本?

UIPopoverview for iPhone,iOS 7

包含标题导航的最简洁方法?

随着 iOS 7 的视图控制器是全屏的,是不是可以在视图的最顶部设置约束,而不仅仅是导航栏?

UIPopOverView 问题中的 TableView

显示键盘 + iPad 时 UIPopoverView 变得扭曲