完全删除View Controller - Swift

时间:2015-11-01 09:49:21

标签: ios swift uiviewcontroller

我创建了一个小游戏(不是使用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上显示的规则

2 个答案:

答案 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的引用,直到它停止执行。

顺便说一句,现在的菜单视图控制器不会删除游戏视图控制器