如何回到不同故事板的先前视图控制器?

Posted

技术标签:

【中文标题】如何回到不同故事板的先前视图控制器?【英文标题】:How to go back to previous view controller of different storyboard? 【发布时间】:2016-04-08 16:52:10 【问题描述】:

我有 2 个故事板,分别是 A 和 B。故事板 A 有多个视图控制器。在一些用户操作之后,我从情节提要 A 切换到情节提要 B。如何在单击后退按钮时返回上一个情节提要 A 并返回到我最初来自的同一视图控制器。

我不能按照下面给出的那样做,因为我不会有 A 的旧导航堆栈。

 let storyboard =  UIStoryboard(name: "A", bundle: nil)
    let vc = storyboard.instantiateInitialViewController() as UIViewController!
    presentViewController(vc, animated: true, completion: nil)

【问题讨论】:

您的视图控制器是否嵌入在导航控制器中? 是的。即使在情节提要更改后,navigationcontroller 是否保持不变? 在下面查看我的答案... 【参考方案1】:

“返回”按钮应该链接到这样的东西:

self.dismissViewControllerAnimated(true, completion: nil)

【讨论】:

在 Xcode 9、Swift 4 中为:self.dismiss(animated: true, completion: nil)【参考方案2】:

如果您的视图控制器嵌入在导航控制器中,您可以执行以下操作:

从情节提要 A 移动到情节提要 B

let storyboard =  UIStoryboard(name: "B", bundle: nil)
let vc = storyboard.instantiateInitialViewController() as UIViewController!
navigationController?.pushViewController(vc, animated: true)

从情节提要 B 回到情节提要 A

navigationController?.popViewControllerAnimated(true)

(当然storyboard B中的初始viewcontroller不应该是navigationcontroller,而是一个普通的viewcontroller)

【讨论】:

这不起作用。我的导航控制器中只有一个视图控制器。那是故事板 B 的初始视图控制器 是公司项目,不能分享。 我删除了 B 开头的导航控制器,并将常规视图控制器作为初始视图控制器。在这种情况下也不起作用。 您能否展示一下您的视图控制器层次结构的屏幕截图? 它最初不起作用,因为我正在从模态视图控制器更改情节提要。【参考方案3】:

对于 XCODE 9 Swift 4

navigationController?.popViewController(animated: true)

【讨论】:

【参考方案4】:

使用此代码.. 当您想返回上一个代码时

navigationController?.popViewControllerAnimated(true)

【讨论】:

在 Xcode 9、Swift 4 中为:navigationController?.popViewController(animated: true)

以上是关于如何回到不同故事板的先前视图控制器?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 XCode 中预览故事板的不同视图控制器

来自故事板的表格视图单元原型未初始化子视图

在 iOS 的基于故事板的应用程序中使用我的视图控制器

带有故事板的 UISplitViewController

用于通用故事板的 PSD

故事板:如何使用故事板为 UIPageViewController 设置初始视图控制器?