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的主要内容,如果未能解决你的问题,请参考以下文章