我创建了一个小游戏(不是使用Sprite Kit),我有一个MenuViewController和一个GameViewController。
在我的GameViewController上,我有一个按钮“MENU”进入菜单。我有这个代码到GameViewController:
print("test")
使用计时器每秒执行一次。
当我按下“MENU”按钮时,我发现自己在菜单上,但计时器仍在运行。我认为GameViewController没有完全删除,我该怎么做?
PS:要解雇GameViewController,我用这个:
func goToMenuViewController() {
let menuViewController = MenuViewController()
menuViewController.modalTransitionStyle = UIModalTransitionStyle.CrossDissolve
self.presentViewController(menuViewController, animated: true, completion: nil)
}
编辑1
我添加了一些关于我的应用层次结构的信息:
当用户启动应用时,他发现自己在MenuViewController
。
此ViewController上有一个播放按钮,它带到GameViewController
。
在MenuViewController
上,还有另一个按钮,它接受RulesEditorViewController,允许修改GameViewController
上显示的规则
答案 0 :(得分:1)
您尝试解雇GameViewController
是错误的。您正在创建新的Menu
控制器并将其显示在GameViewController
上方。这就是为什么这个控制器仍然在应用程序内存中。
您必须使用此功能self.dismissViewControllerAnimated(true, completion: nil)
或self.navigationController?.popToRootViewControllerAnimated(true)
,具体取决于您的segue类型。
目前如果您想要访问RulesEditorViewController
,您必须停止游戏并离开此控制器。但是如果您想在播放时修改选项,那么最好直接从RulesEditorViewController
访问GameViewController
,就像您现在尝试显示菜单一样。
<强>更新强> 首先,您应该了解视图控制器层次结构以及如何呈现它的方法。我相信这个关于故事板示例的教程将对您有所帮助:http://www.raywenderlich.com/50308/storyboards-tutorial-in-ios-7-part-1
答案 1 :(得分:1)
你无法看到GameViewController是否以这种方式被删除。 如果你在GameViewController中使用一个计时器,它将保持对GameViewController的引用,直到它停止执行。
顺便说一句,现在的菜单视图控制器不会删除游戏视图控制器