在展开的 segue 中弹出到根视图

Posted

技术标签:

【中文标题】在展开的 segue 中弹出到根视图【英文标题】:Pop to root view in an unwind segue 【发布时间】:2014-02-05 22:28:01 【问题描述】:

我的视图控制器顺序如下:

A -> (推) -> B -> (模态) -> C

我使用 unwind segue 从 C 返回到 B,它可以工作。

但是我想直接从 C 回到 A。

在位于 B 的 unwind segue 中,我尝试弹出到根视图:

-(IBAction)unwindToBfromC:(UIStoryboardSegue *)segue

    [self.navigationController popToRootViewControllerAnimated:YES];

我得到这个错误:

Tried to pop to a view controller that doesn't exist.

当我执行时:

[self.navigationController popToRootViewControllerAnimated:YES];

在B中一个按钮动作我返回A没问题。怎么了?

【问题讨论】:

我在这里找到了一个不错且优雅的解决方案:链接 那里好像没有链接... 多么愚蠢的错误。链接在这里:chrisrisner.com/Unwinding-with-ios-and-Storyboards 跟着步骤...***.com/questions/12561735/… 【参考方案1】:

由于 C 处于模态,因此没有什么可弹出的。所以请忽略它。

[self dismissViewControllerAnimated:YES completion:nil];

【讨论】:

当我以这种方式解雇 C 时,我只会回到 B。 我的错!如果您使用[self.navigationController popToViewController:[self.navigationController.viewControllers objectAtIndex:0] animated:YES]; 会怎样?虽然有点脏。 然后什么也没有发生,因为它是一个模态,它本身就是一个根视图。我找到了一个不错的解决方案,并在我的答案的评论中发布了一个链接。

以上是关于在展开的 segue 中弹出到根视图的主要内容,如果未能解决你的问题,请参考以下文章

在导航控制器中弹出到根视图

从多个自定义 segue 展开到根控制器时崩溃

如何在 Xcode 中展开 segue

展开后执行segue

在两个视图控制器之间展开 Segue 来回 Swift

(Swift)当多个视图控制器导致相同的视图时展开 segue?