在弹出窗口中显示模态视图

3
我正在尝试从弹出窗口中显示的视图控制器中加载模态视图。模态视图已经加载,但问题是它转换到了主视图而不是在弹出窗口内部。我错过了什么吗?我认为只需从弹出窗口中的vc启动即可在同一弹出窗口中呈现模态视图...
以下是代码,没有特别之处:
- (IBAction)myButton{
ModalVC *controller = [[ModalVC alloc] initWithNibName:@"ModalVC" bundle:nil];

[self presentModalViewController:controller animated:YES];
[controller release]; }
3个回答

19
如果你添加
controller.modalPresentationStyle = UIModalPresentationCurrentContext;

在调用presentModalViewController:animated方法之前,你的ModalVC应该在弹出视图中显示。

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


这两种方法都无法在弹出窗口中显示相机视图。 - Ethan Allen
4
将modal controller的modalPresentationStyle属性设置为UIModalPresentationCurrentContext确实有效,注意是在modal controller上设置而不是presenting controller上。 - Christopher Pickslay
那些声称它不起作用的人:你是否在你的视图控制器上设置了.modalPresentationStyle,还是在它可能包含的UINavigationController上设置了呢?(您需要在导航控制器上进行设置) - NetworkBurger

2
很遗憾,似乎您不能这样做,因为它违反了HIG。请参阅苹果公司的“视图控制器编程指南”中的内容:(iPad Only)弹出窗口
注意:在显示另一个视图控制器模态之前,您应该始终关闭可见的弹出窗口。有关何时以及如何在应用程序中使用弹出窗口的具体指南,请参见iOS人机界面指南中的“Popover(仅适用于iPad)”。

3
苹果在 iPad 的信息应用程序中自行执行此操作。 当编辑有关联系人的某些数据时(例如其特殊铃声),他们将在已显示的弹出窗口中显示模态视图控制器。并且,这样做很有道理。因此,我认为这是正确的行为,尽管 HIG 说了什么。(实际上,“UIModalPresentationCurrentContext” UIModalPresentationStyle专门设计用于此目的,根据苹果的文档。) - Greg Maletic
1
我认为这句话的意思是,在不关闭当前弹出窗口的情况下,不应该以模态方式呈现另一个视图控制器;我认为它与在弹出窗口内以模态方式呈现视图控制器无关。 - titaniumdecoy

0

这是因为你将 presentModalViewController 添加到了 self 中。尝试在你的 ViewController(self)中添加一个 UIBarButtonItem 并执行以下操作:

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

其中senderUIBarButtonItem


我原本以为self就是已经在弹出窗口中的视图控制器,因为代码就在那里。我已经有一个打开了弹出窗口中的视图控制器的barbutton。我现在想做的是使用模态转换将弹出窗口中的视图控制器转换为新的视图控制器。 - sengbsd
抱歉,我误解了你的问题。我没有在弹出窗口内加载模态视图的经验... - ohho

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接