我有一个父视图控制器,用户选择他们想要玩的游戏,然后是玩游戏的子1视图控制器,然后是游戏完成后显示分数的子视图控制器。如何使用子视图2中的标准后退按钮返回父视图控制器。我不需要在子2 VC和父亲之间传递任何东西。
我在parentVC中创建了一个展开segue
@IBAction func unwindToParentVC(segue: UIStoryBoardSegue) {
}
我将ctrl从黄色的Child 2 VC图标拖到Exit图标上并选择了上面的展开segue,但我的后退按钮似乎没有触发这个segue。
我已经阅读过SO的其他解决方案,说我需要使用
override func didMoveToParentViewController(parent: UIViewController?) {
}
但我不知道如何让后退按钮调用此方法,以及我需要在方法体中添加什么代码。任何有关我错误的地方的帮助非常感谢!
答案 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)