在swift中从后退按钮展开两个segues

时间:2016-01-25 21:03:39

标签: swift uiviewcontroller segue

我有一个父视图控制器,用户选择他们想要玩的游戏,然后是玩游戏的子1视图控制器,然后是游戏完成后显示分数的子视图控制器。如何使用子视图2中的标准后退按钮返回父视图控制器。我不需要在子2 VC和父亲之间传递任何东西。

我在parentVC中创建了一个展开segue

@IBAction func unwindToParentVC(segue: UIStoryBoardSegue) {
}

我将ctrl从黄色的Child 2 VC图标拖到Exit图标上并选择了上面的展开segue,但我的后退按钮似乎没有触发这个segue。

我已经阅读过SO的其他解决方案,说我需要使用

override func didMoveToParentViewController(parent: UIViewController?) {
    }

但我不知道如何让后退按钮调用此方法,以及我需要在方法体中添加什么代码。任何有关我错误的地方的帮助非常感谢!

2 个答案:

答案 0 :(得分:1)

  

如何在子视图2视图中使用标准后退按钮返回父视图控制器。

标准后退按钮(在myObject.myfunc(); 中)实际上只做一件事:将当前视图控制器弹出导航堆栈,返回到前一个视图控制器。您可以简单地更改以前的视图控制器,而不是尝试更改该行为。

自定义segue示例:

UINavigationController

然后在子项1和子项2之间将您的segue类更新为class ReplaceSegue: UIStoryboardSegue { override func perform() { guard let nav = sourceViewController.navigationController else { return } // Remove current view controller from navigation stack before segue let viewControllers = nav.viewControllers.filter { $0 != sourceViewController } // Add destination to view controllers and perform segue nav.setViewControllers(viewControllers + [destinationViewController], animated: true) } } 。这将在segue时从导航堆栈中删除子项1,这样当用户点击子项2上的标准后退按钮时,它返回父母。

答案 1 :(得分:0)

1)将此代码传递给您想要去的viewcontoller

@IBAction func prepareForUnwind(segue: UIStoryboardSegue) {

}

2)右键单击并拖动当前viewcontroller中的按钮以退出并选择prepareForUnwind:enter image description here