Ios 完全移除视图控制器-Swift
我创建了一个小游戏(不是用精灵套件),我有一个MenuViewController和一个GameViewController 在我的GameViewController上,我有一个“菜单”按钮可以转到菜单。我在GameViewController中输入了以下代码:Ios 完全移除视图控制器-Swift,ios,swift,uiviewcontroller,Ios,Swift,Uiviewcontroller,我创建了一个小游戏(不是用精灵套件),我有一个MenuViewController和一个GameViewController 在我的GameViewController上,我有一个“菜单”按钮可以转到菜单。我在GameViewController中输入了以下代码: print("test") 它使用计时器每秒钟执行一次 当我按下“菜单”按钮时,我发现自己在菜单上,但计时器仍在运行。我认为GameViewController没有完全移除,我该怎么做 PS:要关闭GameViewControlle
print("test")
它使用计时器每秒钟执行一次
当我按下“菜单”按钮时,我发现自己在菜单上,但计时器仍在运行。我认为GameViewController没有完全移除,我该怎么做
PS:要关闭GameViewController,我使用以下命令:
func goToMenuViewController() {
let menuViewController = MenuViewController()
menuViewController.modalTransitionStyle = UIModalTransitionStyle.CrossDissolve
self.presentViewController(menuViewController, animated: true, completion: nil)
}
编辑1
我添加了一些关于我的应用程序层次结构的信息:
当用户启动应用程序时,他发现自己进入了菜单的ViewController
。
此ViewController上有一个play(播放)按钮,用于进入GameViewController
。
在
菜单ViewController
上,还有一个按钮指向RulesEditorViewController,允许修改显示在游戏视图控制器上的规则。您尝试解除游戏视图控制器的操作是错误的。您正在创建新的菜单
控制器,并将其显示在游戏视图控制器
上方。这就是为什么这个控制器仍然在应用程序内存中
您必须使用此函数self.dismissViewControllerAnimated(true,完成:nil)
或self.navigationController?.poptrootviewcontrolleranimated(true)
,具体取决于您的序列类型
现在,如果你想访问RulesEditorViewController
,你必须停止游戏并离开这个控制器。但如果您想在玩游戏时修改选项,那么最好像您现在尝试显示菜单一样,直接从GameViewController
访问RulesEditorViewController
更新:
首先,您应该了解视图控制器层次结构以及如何表示它的方法。我相信这篇关于故事板示例的教程将对您有所帮助:您无法看到GameViewController是否以这种方式被删除。
如果您在GameViewController中使用计时器,它将保留对GameViewController的引用,直到停止执行为止
顺便说一下,当前菜单视图控制器不会使游戏视图控制器被删除您可以在ViewWillEnglish或ViewDidEnglish方法中停止计时器,并根据需要在ViewWillEnglish或ViewDidEnglish方法中重新启动。这不是问题,我设置此计时器以查看GameViewController是否已完全删除。根据您提供的代码,GameViewController
将不会删除,因为它仍然存在于您的菜单“视图控制器”下。另一个你的GameViewController
无法解除锁定的原因是计时器。您必须手动停止它以避免内存分配。事实上,我使用的是NSUserDefault
,在GameViewController中,会显示一些规则,在另一个ViewController中,用户可以编辑这些规则,编辑规则后,我会这样做:NSUserDefaults.standardUserDefaults().setObject(textFieldText,forKey:“textFieldText”)
和之后:NSUserDefaults.standardUserDefaults().synchronize()
。当我返回GameViewController时,这不是新规则,而是旧规则。我看不到你的问题和你的评论之间的联系。请提供有关视图控制器层次结构的明确信息。我使用了self.dismissViewControllerAnimated(true,completion:nil)
,但它不起作用,当我编辑规则时,GameViewController中仍然有旧规则:(你的GameViewController
是模态的还是嵌入导航控制器?对不起,我不明白我是iOS开发新手,你能解释一下这是什么意思吗?我不使用故事板,只使用代码。你如何展示你的GameViewController
?