dismissViewController不关闭使用通用故事板时出现的视图控制器
问题描述:
我发现导致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(呈现全屏)?dismissViewController不关闭使用通用故事板时出现的视图控制器
我已经创建了一个非常简单的项目,您可以使用它来尝试此操作:Xcode project zip。
项目设置:
- 通用故事板指定给iOS 7+
- 实施酥料饼的介绍Segue公司
- 实现驳回该酥料饼内酥料饼的能力
遭遇意外的行为:
- 打开提供Xcode项目
- 运行iPad上的iOS 7模拟器应用
- 轻按顶部电池呈现酥料饼
- 轻按细胞在酥料饼以关闭它
答
问题在于你尝试处理popover的方式。要关闭弹窗,您应该使用dismissPopoverAnimated
方法而不是dismissViewControllerAnimated
。
我认为你将不得不做更多的工作来完成你的iOS任务版本。根视图控制器应该有一些属性来将创建的弹出窗口与PoppedUpTVC一起存储为弹出式窗口内容,并且PoppedUpTVC必须要求根视图控制器对存储的弹出窗口执行关闭它的方法dismissPopoverAnimated
。
要到酥料饼参考,试试这个在prepareForSegue
:
if ([segue isKindOfClass:[UIStoryboardPopoverSegue class]]) {
UIStoryboardPopoverSegue *popoverSegue = (UIStoryboardPopoverSegue *)segue;
yourDestViewController.propertyToStorePopover = popoverSegue.popoverController;
}
是怎么开始到'UIPopoverController'的参考,当你使用酥料饼演示Segue公司? 'presentationController'属性仅在iOS 8中可用,没有'popoverController'属性。 – Joey 2014-10-09 22:21:53
通过代码 – voromax 2014-10-09 22:31:34
'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