【问题标题】:Dismiss multiple view controllers at once (iOS 8)一次关闭多个视图控制器(iOS 8)
【发布时间】:2014-09-29 04:18:08
【问题描述】:

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

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

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

在最后一个视图中,我在 iOS 7 中调用它以使应用返回初始视图(在当前情节提要之前)。

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

这工作正常,但在 iOS 8 中,顶视图被关闭,并且在动画期间,您会看到视频预览视图。只有当动画完成时,视频预览视图才会被移除(应该如此)。

谁能告诉我如何在移除顶视图的情况下制作正确的动画,并且在动画期间您只​​能看到初始视图?如果应用程序要同时删除所有视图(也同时为它们设置动画),则可以这样做。

【问题讨论】:

  • 我觉得这个帖子可能对我有帮助:stackoverflow.com/questions/25654941/… 但到目前为止还没有成功。
  • 您好,我很好奇您是否找到了解决方案。谢谢!
  • @NickProvost 你找到解决方案了吗?

标签: ios view controllers dismiss


【解决方案1】:

是的,我也注意到了这种行为。 Unwind 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 场景中, 您可以control+从“dismiss”按钮拖动到出口出口控制(如该技术中所示注意或shown herehere) 并选择您的放松转场。在我的随意实验中,当您执行 unwind segue 时,您似乎在过渡期间看不到临时视图。

【讨论】:

  • 所以我尝试了一个放松的segue。但也有类似的问题。而不是当前视图动画然后它下面的视图消失,它似乎是当前视图正在消失并且它下面的视图正在动画视图之外。我觉得放松的 segues 可能是我最好的选择。
  • iOS8.4 中同样的问题stackoverflow.com/questions/31396193/…
猜你喜欢
  • 2011-03-14
  • 2021-09-28
  • 1970-01-01
  • 2018-11-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多