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