2010-05-12 76 views
3

我试图从弹出窗口中显示的视图控制器加载模态视图。加载模式视图,但问题在于它转换到主视图中,而不是在弹出窗口中。这是我缺少的东西吗?我以为只是从VC开始它酥料饼内将同酥料饼中存在的模式的看法...在弹出窗口中呈现模态视图

的代码是没有什么特别的波纹管:

- (IBAction)myButton{ 
ModalVC *controller = [[ModalVC alloc] initWithNibName:@"ModalVC" bundle:nil]; 

[self presentModalViewController:controller animated:YES]; 
[controller release]; } 

回答

0

这是因为你presentModalViewControllerself。试着在你的ViewController(个体经营)添加的UIBarButtonItem做:

[controller presentPopoverFromBarButtonItem:sender permittedArrowDirections:UIPopoverArrowDirectionAny animated:YES]; 

其中senderUIBarButtonItem

+0

嗯,我认为自己是已经在弹出窗口中的视图控制器,因为代码是这样的。 我已经有一个barbutton在popover中打开了一个viewcontroller。我试图做的是将popover中的viewcontroller转换为使用模态转换的新控件。 – sengbsd 2010-05-13 10:05:44

+0

对不起,我误解你的问题。我没有加载模式视图的经验_inside_一个popover ... – ohho 2010-05-13 10:27:25

18

如果在调用presentModalViewController前添加

controller.modalPresentationStyle = UIModalPresentationCurrentContext; 

:动画您ModalVC应在弹出窗口中显示。

在弹出窗口中以模态方式显示某些内容的另一种方法是使用属性modalInPopover。

+0

这些工作都没有为我在弹出窗口内显示相机视图。 – 2011-06-08 01:05:37

+0

确实,这个答案似乎缺少了一点。 – 2011-10-30 21:17:49

+4

在模态控制器(不是呈现控制器)上将modalPresentationStyle设置为UIModalPresentationCurrentContext确实有效。 – 2011-12-23 20:32:15

2

不幸的是,它似乎你不能这样做,它违反了HIG。从苹果公司的View Controller Programming Guide

注意:你应该总是解雇模态显示 另一个视图控制器之前,可见酥料饼。有关何时和如何在应用程序中使用弹出窗口的具体指南,请参阅 iOS人机界面指南中的“Popover(仅限iPad)”。

+3

Apple在iPad的Messages应用程序中自行执行此操作。在编辑某个联系人的某些数据(例如他们的特殊铃声)时,他们将在已显示的弹出窗口中显示一个模式视图控制器。而且,这是有道理的。所以,尽管HIG说了什么,但我认为这是正确的行为。 (实际上,根据苹果公司的文档,UIModalPresentationStyle“UIModalPresentationCurrentContext”是为这个明确的目的而设计的。) – 2012-03-03 00:52:00

+1

我认为这个引用意味着你不应该在当前弹出窗口后面以模态方式呈现另一个视图控制器而不关闭它;我不认为它涉及在弹出窗口中模态地呈现视图控制器。 – titaniumdecoy 2012-12-15 00:44:49