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

Posted

技术标签:

【中文标题】在两个视图控制器之间展开 Segue 来回 Swift【英文标题】:Unwind Segue Between Two View Controllers Back and Forth Swift 【发布时间】:2017-03-04 21:13:54 【问题描述】:

我希望构建一个具有两个视图控制器(VC1 和 VC2)的应用程序,每个控制器都包含一个计时器。我希望我的用户能够在这些视图之间来回切换并允许每个计时器仍然运行。

目前,我已经成功地展开到 VC1 或 VC2(取决于我设置为初始视图控制器),尽管我很难成功地来回展开(即从 VC1 到 VC2 再回到 VC1 和等等)

我想我可能能够通过最初从 VC1 到 VC2 的正常转场(按下按钮)来实现这一点,虽然它会展开回到 VC1,但我无法让我的应用程序从 VC2 展开在这里。

My two simple timer view controllers

这里是代码(用于 VC1):

@IBAction func unwindToSecondView(_ sender: UISwipeGestureRecognizer) 

    performSegue(withIdentifier: "unwindToSecond", sender: self)    


@IBAction func backFromSecondView(segue: UIStoryboardSegue) 

对于 VC2:

@IBAction func segueToFirstView(_ sender: UISwipeGestureRecognizer)

    performSegue(withIdentifier: "unwindToFirst", sender: self)


@IBAction func backFromFirstView(segue: UIStoryboardSegue) 

我对 swift 非常陌生,并且在这里找到了几个有趣的资源(How to unwind two view controllers 和 Swift Timer() will not update label after switching between views),但在其他方面并没有取得太大的成功——非常感谢任何针对不同实现的建议或想法。谢谢!!

【问题讨论】:

将标准转场视为“前进”,将展开转场视为“后退”。当您从 vc1 切换到 vc2 时,您会向前走,当您放松回到 vc1 时,您会后退。现在,尝试“后退”一步并最终向前迈进是没有意义的,这就是你想要做的。最简单的方法可能是一个UITabBarController,否则你将构建自己的容器视图控制器并切换内容。 【参考方案1】:

Apple 已经为此发布了很好的示例。我建议始终查看 Apple Developer Guide 站点和源代码。你的答案如下。 https://developer.apple.com/library/content/samplecode/SegueCatalog/Introduction/Intro.html

【讨论】:

【参考方案2】:

我发现本教程很有用。

working-with-unwind-segues-programmatically-in-swift

【讨论】:

【参考方案3】:

segue 来自 A-B 和 B-A,您只需 dismiss(),如果您想从 B-A 发回数据,您可以创建一个 delegate

【讨论】:

以上是关于在两个视图控制器之间展开 Segue 来回 Swift的主要内容,如果未能解决你的问题,请参考以下文章

在 Xcode7 - beta 5 和 storyboard 中展开 segue

在多个故事板环境中展开 segue

两个视图控制器之间的 Segue

创建一个 segue 并通过 Swift 在两个视图控制器之间附加它?

iOS - 如何在通过手动 Segue 链接的两个视图控制器之间传递信息?

Segue 准备好,但性能无一例外地失败