我发现了一种情况导致dismissViewController:animated:completion
没有关闭已经呈现的视图控制器。虽然它在运行iOS 8的iPad上有所消失,但在运行iOS 7.1的iPad上并没有消失。我尝试过self
,self.presentingViewController
和self.presentedViewController
- 一切都没有。我已经尝试使用Xcode 6.0和6.1 beta。虽然我确实认为这是一个错误,但是可以做些什么来解决这个问题,并强制解雇该视图控制器,确保它适用于运行iOS 7和8的iPad(作为弹出框提供),以及运行iOS 7和8的iPhone(全屏显示)?
我创建了一个非常简单的项目,您可以尝试使用它:Xcode project zip。
项目设置:
遇到意外行为:
答案 0 :(得分:0)
问题在于您尝试处理弹出窗口的方式。要关闭弹窗框,您应使用dismissPopoverAnimated
方法而不是dismissViewControllerAnimated
。
我认为您必须完成更多工作才能完成定位两个iOS版本的任务。根视图控制器应具有一些属性来存储创建的popover,PoppedUpTVC作为弹出内容,PoppedUpTVC必须要求根视图控制器对存储的popover执行dismissPopoverAnimated
方法以关闭它。
要获取对弹出窗口的引用,请在prepareForSegue
:
if ([segue isKindOfClass:[UIStoryboardPopoverSegue class]]) {
UIStoryboardPopoverSegue *popoverSegue = (UIStoryboardPopoverSegue *)segue;
yourDestViewController.propertyToStorePopover = popoverSegue.popoverController;
}