一次关闭多个视图控制器(iOS 8)

时间:2014-09-29 04:18:08

标签: ios view controllers dismiss

所以在我的代码中,我有一个Tab Bar控制器。当您单击其中一个选项卡时,它会调用此代码以打开新的故事板(用于视频捕获)。

NavController *NC = [[NavController alloc] initWithCaptureInput];
[self presentViewController:NC animated:YES completion:nil];

在这个视图中,他录制了一个视频,然后故事板呈现了segue。在该视图中,用户可以预览他的视频。当他点击一个按钮时,故事板会将他推到下一个视图。

在最后一个视图中,我用它在iOS 7中调用它来使应用程序返回到初始视图(在当前故事板之前)。

[self.presentingViewController.presentingViewController dismissViewControllerAnimated:YES completion:nil];

这很好用,但在iOS 8中,顶视图被取消,在动画期间,您会看到视频预览视图。仅在动画完成时才删除视频预览视图(应该如此)。

有人能告诉我如何删除顶视图的动画,在动画过程中你只能看到初始视图吗?如果应用程序要同时删除所有视图(同时为它们设置动画),则可以执行此操作。

1 个答案:

答案 0 :(得分:1)

是的,我也注意到了这种行为。放松segues(如Technical Note TN2298中所述)似乎更优雅地处理它。

在要将展开到的视图控制器中,添加一个如下所示的方法:

// use whatever name most descriptively captures the functional purpose of the 
// view controller that you are unwinding _to_

- (IBAction)unwindToMainMenu:(UIStoryboardSegue*)sender
{
}

然后在IB场景中你正在转换你可以控制 +拖动"解雇"按钮退出出口控件(如技术说明中所示或shown herehere)并选择展开segue。在我的偶然实验中,当您执行展开segue时,您似乎在转换过程中没有看到临时视图。