返回主视图控制器后如何完全关闭视图控制器
How to completely close a view controller after returning to home view controller
我有一个 iOS 应用包含三个视图控制器
homeViewController -> newGameSelectionViewController -> GameViewController
在 GameViewController
中,我有一个应该关闭视图控制器的 "home" 按钮和 return 到 newGameSelectionViewController
。
在newGameSelectionViewController
、
override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
gameVC = segue.destinationViewController as! GameViewController
gameVC.countdown = 60
}
然后,我创建了一个从 GameViewController
到 newGameSelectionViewController
的展开 segue
。
在新的GameSelectionViewController中,
@IBAction func unwindFromHomeButton(segue: UIStoryboardSegue) {
gameVC.dismissViewControllerAnimated(true, completion: nil)
}
当我在 GameViewController
中按下主页按钮时,视图关闭并且 return 转到 newGameSelectionViewController
问题是,在按下主页按钮并 return 转到 newGameSelectionViewController
后,GameView
控制器中的倒数计时器仍然继续。如果我打开另一个 GameViewController
,它还会打开一个全新的视图控制器。也就是说,第一个GameViewController
并没有通过调用dismissViewController()
来关闭。如何完全关闭 ViewController
以便在我开始新游戏时,之前的视图控制器不会继续在后台计数。
我正在 GameViewController
中用 println()
打印倒计时值。这就是我看到之前的倒计时值在 dismissViewController()
之后仍在打印的地方
您的 gameVC
变量将持有对 GameViewController
实例的强引用,因此即使它已被关闭,该对象仍然存在,因为它的引用计数不是 0。
您需要在展开方法中将 gameVC
设置为 nil 才能删除此引用。
@IBAction func unwindFromHomeButton(segue: UIStoryboardSegue) {
gameVC=nil;
}
如果您通过 segue 正确调用视图控制器,则无需在 unwind 方法中显式关闭视图控制器 - unwind 过程将为您执行此操作。
我有一个 iOS 应用包含三个视图控制器
homeViewController -> newGameSelectionViewController -> GameViewController
在 GameViewController
中,我有一个应该关闭视图控制器的 "home" 按钮和 return 到 newGameSelectionViewController
。
在newGameSelectionViewController
、
override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
gameVC = segue.destinationViewController as! GameViewController
gameVC.countdown = 60
}
然后,我创建了一个从 GameViewController
到 newGameSelectionViewController
的展开 segue
。
在新的GameSelectionViewController中,
@IBAction func unwindFromHomeButton(segue: UIStoryboardSegue) {
gameVC.dismissViewControllerAnimated(true, completion: nil)
}
当我在 GameViewController
中按下主页按钮时,视图关闭并且 return 转到 newGameSelectionViewController
问题是,在按下主页按钮并 return 转到 newGameSelectionViewController
后,GameView
控制器中的倒数计时器仍然继续。如果我打开另一个 GameViewController
,它还会打开一个全新的视图控制器。也就是说,第一个GameViewController
并没有通过调用dismissViewController()
来关闭。如何完全关闭 ViewController
以便在我开始新游戏时,之前的视图控制器不会继续在后台计数。
我正在 GameViewController
中用 println()
打印倒计时值。这就是我看到之前的倒计时值在 dismissViewController()
您的 gameVC
变量将持有对 GameViewController
实例的强引用,因此即使它已被关闭,该对象仍然存在,因为它的引用计数不是 0。
您需要在展开方法中将 gameVC
设置为 nil 才能删除此引用。
@IBAction func unwindFromHomeButton(segue: UIStoryboardSegue) {
gameVC=nil;
}
如果您通过 segue 正确调用视图控制器,则无需在 unwind 方法中显式关闭视图控制器 - unwind 过程将为您执行此操作。