【问题标题】: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 是否保持不变?
  • 在下面查看我的答案...

标签: ios swift storyboard


【解决方案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)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-10-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多