如何放松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退后几步?的主要内容,如果未能解决你的问题,请参考以下文章