从 Popover View 内部呈现 Modal View Controller

Posted

技术标签:

【中文标题】从 Popover View 内部呈现 Modal View Controller【英文标题】:Present Modal View Controller from inside Popover View 【发布时间】:2013-03-14 19:49:49 【问题描述】:

所以在我的通用应用程序中,我有一个部分,人们可以在其中查看我们系统中现有的笔记列表(通过简单的网络服务检索),然后如果他们愿意,还可以创建一个新的笔记。因此对于 iphone,它的布局非常简单,一个 TableViewController 用于显示列表,在 NavigationBar 上带有一个“添加”按钮,该按钮显示了用于添加新项目的模态视图。但是在 iPad 上,相同的布局会浪费很多空间,所以我选择使用 popOver 方法在 popOver 中显示列表,然后让它们从那里添加。我的问题是,当用户单击 PopOver 视图中的“添加”按钮时,模式视图会全屏显示,而不是仅出现在弹出视图中。这是我到目前为止的代码:

-(void) AddButtonPressed:(id)sender 

NewNoteVC *newNote = [[[NewNoteVC alloc] initWithNibName:@"NewNoteVC" bundle:nil] autorelease];
newNote.defaultClientID = defaultClientID;
UINavigationController *navCon = [[[UINavigationController alloc] initWithRootViewController:newNote] autorelease];
if ([isPopOver isEqualToString:@"YES"]) 
    [navCon setModalInPopover:YES];
    [self.navigationController setModalInPopover:YES];
    [self.navigationController presentModalViewController:navCon animated:YES];

else 
    [self.navigationController presentModalViewController:navCon animated:YES];

“isPopOver”字符串只是从调用此 TableView 的前一个屏幕发送的占位符(我知道我可以将其切换为布尔值以获得更好的性能,我只是将它们放在一起快速尝试一下)。我知道我在某个地方搞砸了,我只是不知道我需要什么设置才能让它正常工作。

【问题讨论】:

UIPopoverController presented modally doesn't work in ios 5 的可能重复项 【参考方案1】:

您需要将视图控制器的modalPresentationStyle 定义为“当前上下文”。

navCon.modalPresentationStyle = UIModalPresentationCurrentContext;

这将导致模态视图控制器像弹出框的根控制器一样填充弹出框。

【讨论】:

【参考方案2】:

尝试使用presentViewController:animated:completion: 代替presentModalViewController:animated: 并设置self.navigationController.definesPresentationContext = YES

【讨论】:

以上是关于从 Popover View 内部呈现 Modal View Controller的主要内容,如果未能解决你的问题,请参考以下文章

删除Popover View Controller -swift

如何将道具从 FlatList 项目传递给 Modal?

iPad开发--UIPopoverController简单使用iOS7之前和iOS7之后的使用方法

bootstrap 的modal中popover操作时,弹窗中的输入框,按钮不能聚焦

iOS 如何从 Uiview 呈现 Modal ViewController

React Native:在Modal中显示FlatList数据