【问题标题】:How to create Unwind segue programmatically如何以编程方式创建 Unwind segue
【发布时间】:2016-07-02 17:02:53
【问题描述】:

我制作了一个不使用情节提要的应用程序,并且在我的应用程序的这一部分中,我需要仅以编程方式创建从ThirdViewControllerFirstViewController 的展开转场。我知道如何使用 sotorybard 做到这一点,但找不到任何解决方案如何以编程方式做到这一点。有什么建议吗?

【问题讨论】:

  • 你说“_create一般来说你会在你的故事板上定义一个展开segue,然后以编程方式performSegueWithIdentifier。你有什么理由不能这样做吗?
  • 是的。所有应用程序都是用代码制作的,主情节提要是空的。
  • 您是在使用 UINavigationController 还是 viewController 以模态方式呈现?第一个和第三个之间有一个SecondViewController吗?
  • 是的,我使用的是UINavigationController,第一个和第三个之间是SecondViewController

标签: swift uinavigationcontroller segue unwind-segue


【解决方案1】:

没有情节提要,您无法创建实际的segue,但您可以通过在navigationController 上调用popToViewController 来执行等效操作。这是一个连接到按钮以从ThirdViewController返回FirstViewController的示例:

@IBAction func goBackToFirstVC(sender: UIButton) {
    guard let controllers = navigationController?.viewControllers else { return }
    let count = controllers.count
    if count > 2 {
        // Third from the last is the viewController we want
        if let firstVC = controllers[count - 3] as? FirstViewController {
            // pass back some data
            firstVC.someProperty = someData
            firstVC.someOtherProperty = moreData

            navigationController?.popToViewController(firstVC, animated: true)
        }
    }
}

viewWillAppear 的覆盖中,您可以对传回的数据进行操作。

【讨论】:

  • 它是完美的解决方案,并且首先有效!非常感谢!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-03-29
  • 2018-09-10
  • 1970-01-01
  • 2023-04-08
  • 1970-01-01
相关资源
最近更新 更多