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

4

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

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

在这个视图中,他录制了一个视频,然后故事板呈现了segue。在那个视图中,用户可以预览他的视频。当他点击一个按钮时,storyboard会将他推到下一个视图。
在最后一个视图中,我曾经在iOS 7中调用它,使应用程序返回到初始视图(当前故事板之前的视图)。
[self.presentingViewController.presentingViewController dismissViewControllerAnimated:YES completion:nil];

这个方法在iOS 8中工作得很好,但是顶部视图被关闭时,在动画过程中,您会看到视频预览视图。直到动画完成后,视频预览视图才会被删除(应该是这样的)。

请问有人能告诉我如何实现适当的动画,即在移除顶部视图的同时,在动画过程中只看到初始视图?如果应用程序同时删除所有视图(同时进行动画),就可以实现这一点。


我觉得这个线程可能会对我有帮助:https://dev59.com/aV8e5IYBdhLWcg3whqvl 但是到目前为止它还没有起作用。 - NickProvost
嗨,我很好奇你是否找到了解决方案。谢谢! - James
@NickProvost 你找到解决方案了吗? - Matt
1个回答

1

是的,我也注意到了这种行为。解开segue(如技术笔记TN2298中所述)似乎更优雅地处理这个问题。

在你想要解开的视图控制器中,添加一个看起来像这样的方法:

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

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

然后在您正在过渡的IB场景中,您可以控制+从“dismiss”按钮向退出出口控件拖动(如技术说明所示或如此处所示此处),然后选择您的反向跳转。在我的简单尝试中,当您执行反向跳转时,在过渡期间似乎不会短暂看到中间视图。


所以我尝试了一个取消转场。但是出现了类似的问题。当前视图不是先动画消失,然后下面的视图消失,而是当前视图消失,下面的视图动画消失。我觉得取消转场可能是最好的选择。 - NickProvost
这是在iOS8.4中相同的问题。http://stackoverflow.com/questions/31396193/impossible-animation-with-dismissviewcontrolleranimated-ios8-4 - Chisx

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接