gpt4 book ai didi

swift - 从后退按钮 swift 展开两个 segue

转载 作者:行者123 更新时间:2023-11-28 06:50:39 26 4
gpt4 key购买 nike

我有一个父 View Controller ,用户可以在其中选择他们想玩的游戏,然后是玩游戏的子 1 View Controller ,然后是游戏完成后显示分数的子 2 View Controller 。如何使用 subview 2 中的标准后退按钮返回父 View Controller 。我不需要在 child 2 VC 和 parent 之间传递任何东西。

我在 parentVC 中创建了一个 unwind segue

@IBAction func unwindToParentVC(segue: UIStoryBoardSegue) {
}

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

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

override func didMoveToParentViewController(parent: UIViewController?) {
}

但我不确定如何让后退按钮调用此方法,以及我需要在方法主体中添加哪些代码。非常感谢任何关于我出错的地方的帮助!

最佳答案

How do I use the standard back button in child 2 view to get back to the parent view controller.

标准后退按钮(在 UINavigationController 中)实际上只做一件事:将当前 View Controller 从导航堆栈中弹出,返回到前一个 View Controller 。您无需尝试更改该行为,只需更改之前的 View Controller 即可。

自定义转场示例:

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 之间的 ReplaceSegue。这将在 segue 时从导航堆栈中删除子 1,这样当用户点击标准后退按钮时 child 2,它返回给 parent 。

关于swift - 从后退按钮 swift 展开两个 segue,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35002331/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com