Swift 以编程方式创建一个 unwind segue

Posted

技术标签:

【中文标题】Swift 以编程方式创建一个 unwind segue【英文标题】:Swift create a unwind segue programmatically 【发布时间】:2020-06-16 13:44:52 【问题描述】:

按照here 的说明,我正在使用情节提要创建一个展开转场。

但我想做的是使用 swift 以编程方式创建展开转场,

这背后的原因是我想为我的所有 UIViewController 创建一个默认展开 segue。

【问题讨论】:

问题是没有 UIViewController 代码方法可以完成情节提要中展开 segue 的工作。自己写会非常非常困难。我已将其添加到我的答案中。另请参阅我对***.com/questions/62152164/unwind-without-storyboard 的回答。 【参考方案1】:

你不能。 segue 是故事板中的东西。您的代码(以编程方式)无法查看情节提要并对其进行更改。

相反,您可以以编程方式执行 unwind segue 所做的操作,例如弹回某个视图控制器。

但是“返回”到某个视图控制器的一般问题,无论涉及什么(dismiss 和 pop 的某种组合等)是一个非常困难和常见的问题。确实非常烦人的是,尽管故事板unwind segue“知道”如何做到这一点,但没有任何方法可以让 在代码中做到这一点。我只能建议向 Apple 提交错误报告。

【讨论】:

【参考方案2】:

如果你想回到根视图控制器,你可以像这样在navigationController 上使用popToRootViewControllerAnimated

navigationController?.popToRootViewController(animated: true)

或者,如果您希望返回到特定的视图控制器,请使用:

navigationController?.popToViewController(secondViewController, animated: true)

【讨论】:

不,我不是要回到根视图控制器,我的预期输出是为 UIViewController 创建一个默认展开 segue,以便它可以展开到特定的视图控制器,即使它不在导航控制器 正如@matt 所解释的,segue 与故事板相关,如果您希望返回导航控制器中的控制器,那么我也添加了该方法。

以上是关于Swift 以编程方式创建一个 unwind segue的主要内容,如果未能解决你的问题,请参考以下文章

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

以编程方式执行 unwind segue

在单元测试中以编程方式执行 Unwind Segue

Swift 3 - 以编程方式创建标题栏约束

如何使用 Swift 以编程方式创建 UILabel?

如何以编程方式创建 UIImage 视图 - Swift