如何放松segue退后几步?

Posted

技术标签:

【中文标题】如何放松segue退后几步?【英文标题】:How to unwind segue several steps back? 【发布时间】:2014-11-03 09:41:14 【问题描述】:

根据主题,网上有很多东西,但我不明白。我有一个带有Custom segue 实现但没有Navigation controller 的应用程序。在某些情况下,我需要放松几个步骤。

为了实现,我使用简单的调用:

代码自定义SEGUE

对于风:

[[self sourceViewController] presentModalViewController:[self destinationViewController] animated:YES];

放松:

[[self destinationViewController] dismissViewControllerAnimated: YES completion: nil];

据我了解,当我在内存中某处缠绕segue 时,会在展开期间使用数据。出于这个原因,在自定义展开中我只使用只读属性destinationViewController

那么我怎样才能在一个动作中放松几个步骤呢?或者我必须在不同的View controllers 中进行几次放松?

看了下面的question,但是没看懂实现。

下面是我的应用程序逻辑示例:

示例

我有 4 个链中的 VC: VC A -> VC B -> VC C -> VC D

我来回缠绕和放松。逻辑没问题。在某些情况下,我需要从 VC D 回到 VC B。怎么做?我可以直接展开到 VC B,还是必须先展开到 VC C,然后在展开处理程序中展开到 VC B?? p>

我也想过从VCD到VCB的额外segue,但是网上有评论说这不是正确的方式,因为segue chain会得到乱。

【问题讨论】:

【参考方案1】:

What are Unwind segues for and how do you use them? 的答案包含您需要了解的有关 unwindSegues 的所有信息(建议您重新阅读)。

但要获得更直接的答案,是的,您可以从 VC D 回到 VC B。为此,您必须首先在 VC B 中实现该方法:

 - (IBAction)unwindToVCB:(UIStoryboardSegue *)unwindSegue


完成此操作后,转到 IB,并将按钮的操作拖动到退出图标,然后您应该选择上面创建的方法作为选择器。 (这直接取自上述问题/答案)。

再次,为了更清楚地了解我所说的内容,请阅读我上面提到的链接问题的答案。

【讨论】:

10x,我想我现在明白了。我忘记了展开是在第一个控制器中实现的——我必须展开。我马上试试。又是 10 倍。 当然是@RJiryes。实际上我已经阅读了那个答案,但没有弄清楚unwindtoVCB必须在VC B中实现。 是的,我是这么认为的,这就是为什么我把它放在你的问题上。祝你好运。【参考方案2】:

您必须使用 UINavigationController,只需将它作为 mainViewController 添加到情节提要中并将 'A' ViewController 设置为它的根视图控制器,然后将所有 segue 更改为 push segue,为它们设置 'Identifires',然后您可以使用 performSegueWithIdentifire 来推送视图控制器和内部视图控制器:

[self.navigationController popViewControllerAnimated:];

[self.navigationController popToViewController: animated:];

关闭它。

【讨论】:

我不使用UINavigationController@mityaika07。我的设计有问题,我不知道如何隐藏Navigation controller - 它必须在我的 UI 上不可见。 @RJiryes 的答案也有效。 [self.navigationController setNavigationBarHidden:self.panelsHidden Animation:YES];可用于隐藏顶栏 10x @mityaika07。我会考虑到这一点。但我现在不会使用它,因为我已经有了导航逻辑。 你遇到的最大问题:modalViewControllers 有旋转问题,我建议阅读这个:***.com/questions/3772016/…

以上是关于如何放松segue退后几步?的主要内容,如果未能解决你的问题,请参考以下文章

如何以编程方式执行Unwind segue?

如何在 Swift 中使用警报视图解除 segue?

放松 Segue 还是别的啥?

如何从 UIAlertView 按钮中解除 segues

放松Segue隐藏标签栏

segue放松后,TableView消失