如何以编程方式创建“Unwind Segue”

4

我制作了一个不使用storyboard的应用程序,在应用程序的这部分中,我需要仅通过编程方式从ThirdViewController创建一个unwind segue到 FirstViewController 。我知道如何使用sotorybard完成它,但无法找到任何解决方案以通过编程方式完成它。有什么建议吗?


你说:“_create”,通常你会在Storyboard上定义一个“Unwind Segue”,然后通过编程使用performSegueWithIdentifier。你不能这样做有什么原因吗? - Rob
是的。所有应用程序都是通过代码制作的,主故事板为空。 - PiterPan
你是使用UINavigationController还是以模态方式呈现的viewControllers?第一和第三之间是否有SecondViewController? - vacawama
是的,我正在使用 UINavigationController,在第一个和第三个之间是 SecondViewController - PiterPan
1个回答

3

如果没有Storyboard,您无法创建实际的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 方法时,您可以使用传回的数据进行操作。

这是一个完美的解决方案,也是第一个可行的!非常感谢! - PiterPan

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接