gpt4 book ai didi

ios - 返回主视图 Controller 后如何完全关闭 View Controller

转载 作者:行者123 更新时间:2023-11-29 01:48:20 24 4
gpt4 key购买 nike

我有一个由三个 View Controller 组成的 iOS 应用

homeViewController -> newGameSelectionViewController -> GameViewController

GameViewController 中,我有一个“主页”按钮,它应该关闭 View Controller 并返回到 newGameSelectionViewController

newGameSelectionViewController 中,

override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
gameVC = segue.destinationViewController as! GameViewController
gameVC.countdown = 60
}

然后,我创建了一个从 GameViewControllernewGameSelectionViewController 的 unwind segue

在新的GameSelectionViewController中,

@IBAction func unwindFromHomeButton(segue: UIStoryboardSegue) {
gameVC.dismissViewControllerAnimated(true, completion: nil)
}

当我在 GameViewController 中按下主页按钮时, View 关闭并返回到 newGameSelectionViewController

问题是,在按下主页按钮并返回到 newGameSelectionViewController 后,GameView Controller 中的倒数计时器仍然继续。如果我打开另一个 GameViewController,它还会打开一个全新的 View Controller 。换句话说,首先 GameViewController 没有通过调用 dismissViewController() 关闭。如何完全关闭 ViewController,以便在我开始新游戏时,之前的 View Controller 不会在后台继续计数。

我在 GameViewController 中使用 println() 打印倒计时值。这就是我看到之前的倒计时值在 dismissViewController()

之后仍在打印的地方

最佳答案

您的 gameVC 变量将持有对 GameViewController 实例的强引用,因此即使它已被解除,该对象仍然存在,因为其引用计数不为 0 .

您需要在展开方法中将 gameVC 设置为 nil 才能删除此引用。

@IBAction func unwindFromHomeButton(segue: UIStoryboardSegue) {
gameVC=nil;
}

如果您通过 segue 正确调用 View Controller ,则无需在展开方法中显式关闭 View Controller - 展开过程将为您执行此操作。

关于ios - 返回主视图 Controller 后如何完全关闭 View Controller ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31673837/

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