dismissViewController不关闭使用通用故事板时出现的视图控制器

问题描述:

我发现导致dismissViewController:animated:completion不会关闭已呈现的视图控制器的情况。虽然它在运行iOS 8的iPad上消失,但它并不会在运行iOS 7.1的iPad上消失。我试过selfself.presentingViewControllerself.presentedViewController - 全都无能为力。我用Xcode 6.0和6.1 beta来试用它。虽然我确实认为这是一个错误,但是可以采取什么措施来解决该问题,并强制取消该视图控制器,确保它适用于运行iOS 7和8(呈现为弹出窗口)的iPad以及运行iOS 7和8的iPhone(呈现全屏)?dismissViewController不关闭使用通用故事板时出现的视图控制器

我已经创建了一个非常简单的项目,您可以使用它来尝试此操作:Xcode project zip

项目设置:

  • 通用故事板指定给iOS 7+
  • 实施酥料饼的介绍Segue公司
  • 实现驳回该酥料饼内酥料饼的能力

遭遇意外的行为:

  1. 打开提供Xcode项目
  2. 运行iPad上的iOS 7模拟器应用
  3. 轻按顶部电池呈现酥料饼
  4. 轻按细胞在酥料饼以关闭它

问题在于你尝试处理popover的方式。要关闭弹窗,您应该使用dismissPopoverAnimated方法而不是dismissViewControllerAnimated

我认为你将不得不做更多的工作来完成你的iOS任务版本。根视图控制器应该有一些属性来将创建的弹出窗口与PoppedUpTVC一起存储为弹出式窗口内容,并且PoppedUpTVC必须要求根视图控制器对存储的弹出窗口执行关闭它的方法dismissPopoverAnimated

要到酥料饼参考,试试这个在prepareForSegue

if ([segue isKindOfClass:[UIStoryboardPopoverSegue class]]) { 
    UIStoryboardPopoverSegue *popoverSegue = (UIStoryboardPopoverSegue *)segue; 
    yourDestViewController.propertyToStorePopover = popoverSegue.popoverController; 
} 
+0

是怎么开始到'UIPopoverController'的参考,当你使用酥料饼演示Segue公司? 'presentationController'属性仅在iOS 8中可用,没有'popoverController'属性。 – Joey 2014-10-09 22:21:53

+1

通过代码 – voromax 2014-10-09 22:31:34

+0

'prepareForSegue'或执行'init(contentViewController viewController:UIViewController)'和'func presentPopoverFromRect(_ rect:CGRect,inView view:UIView,permittedArrowDirections arrowDirections:UIPopoverArrowDirection,animated animated:Bool)是一个捕捉它的好地方 – Joey 2014-10-15 22:21:33