从模态呈现的视图控制器内部呈现 UIPopoverController
Posted
技术标签:
【中文标题】从模态呈现的视图控制器内部呈现 UIPopoverController【英文标题】:Present UIPopoverController from inside a modally presented view controller 【发布时间】:2011-11-29 20:00:24 【问题描述】:是否不可能从显示为UIModalPresentationFormsheet
的视图控制器中显示弹出框控制器?还是我错过了什么?
此代码在非模态视图控制器上运行良好,并正确显示弹出框。(WEPopoverController 是来自here 的自定义实现。)
GenericDataTableViewController *genericDataController = [[GenericDataTableViewController alloc] initWithNibName:@"GenericDataTableViewController" bundle:[NSBundle mainBundle]];
genericDataController.dataSource = [NSMutableArray arrayWithObjects:@"asli", nil];
genericDataController.delegate = self;
genericDataController.contentSizeForViewInPopover = CGSizeMake(300, 46 * [genericDataController.dataSource count]);
self.popoverController = [[[WEPopoverController alloc] initWithContentViewController:genericDataController] autorelease];
self.popoverController.delegate = self;
[self.popoverController presentPopoverFromRect:((UIButton *)sender).frame
inView:self.view
permittedArrowDirections:UIPopoverArrowDirectionUp
animated:YES];
[genericDataController release];
但是当我把它放在模态视图控制器中时,它会在模态控制器下方显示弹出框,即在呈现模态视图的视图控制器上。所以用户是看不到的。
我该如何解决这个问题?
【问题讨论】:
我创建了一个简单的故事板:初始视图有一个按钮,可以对第二个 VC 进行模态搜索。第二个 VC 有一个按钮,可以对第三个 VC 进行弹出框转义。弹出框正确显示。所以是的,这是可能的。 在你的代码中,self
是模态VC,还是呈现模态VC的VC?
self 是模态VC。我无法理解您的第一条评论抢劫,什么是转场?
segue 是故事板中的一个对象,它定义了视图控制器之间的转换。故事板是 ios 5.0 中支持的一种新型 XIB。我使用故事板在模态 VC 上测试弹出框,因为故事板让我无需编写任何代码即可进行测试。
是的,你是对的,问题在于 WEPopoverController 的实现。它似乎工作得如此无懈可击,以至于我从未怀疑过。 UIPopoverController 可以从模态视图控制器呈现。你为什么不写你的评论作为答案?对于以后需要这个问题的其他人来说,这将更具可读性。谢谢:]
【参考方案1】:
答案已在问题的 cmets 中进行了解释,但我在这里对其进行总结以进行更清晰的问答。
如果您的弹出框控制器是UIPopoverController
,则从表单内显示弹出框控制器没有任何限制。我的问题是由于WEPopoverController
的实施。
所以,牺牲视觉体验,继续老的UIPopoverController
。
【讨论】:
同时将按钮添加到navigationController
并使用仅在第一次单击时执行的uipopovercontroller
操作将其呈现为弹出框。在解雇 n 之后显示它的动作选择器没有被执行。以上是关于从模态呈现的视图控制器内部呈现 UIPopoverController的主要内容,如果未能解决你的问题,请参考以下文章