Ios 背景音乐播放两次

Ios 背景音乐播放两次,ios,swift,uiviewcontroller,sprite-kit,background-music,Ios,Swift,Uiviewcontroller,Sprite Kit,Background Music,当视图加载到我的菜单(menuViewController)时,背景音乐开始播放(正常工作)。然后,当我单击开始并转到我的游戏(GameViewController)并返回菜单(menuViewController)时,它开始播放两次 这是我的viewDidLoad() 我尝试实例化menuViewController,然后使用该实例,而不是自动创建一个新实例(我想这不起作用) 这是在我的GameViewController中 @IBAction func goToMenu(sender: An

当视图加载到我的菜单(menuViewController)时,背景音乐开始播放(正常工作)。然后,当我单击开始并转到我的游戏(GameViewController)并返回菜单(menuViewController)时,它开始播放两次

这是我的viewDidLoad()

我尝试实例化menuViewController,然后使用该实例,而不是自动创建一个新实例(我想这不起作用)

这是在我的GameViewController中

@IBAction func goToMenu(sender: AnyObject) {
    let storyboard = UIStoryboard(name: "Main", bundle: nil)
    let vc = storyboard.instantiateViewControllerWithIdentifier("menuViewController")
    self.presentViewController(vc, animated: true, completion: nil)
}

override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?)
{
    if segue.identifier == "gameToMenu" {
        let destinationController = segue.destinationViewController as! menuViewController
            destinationController.x = true
    }
我还收到一个错误,上面写着:

“警告:试图在Ninja.GameViewController:0x7fdad1c1d7a0上显示其视图不在窗口层次结构中的Ninja.menuViewController:0x7fdad4cdbf20!”


如果要在视图控制器的顶部显示视图控制器,则需要确保父视图控制器dismissing@Knight0fDragon好的,谢谢,但我是一个初学者,你能告诉我怎么做吗?有很多方法,只要搜索这个网站交换视图控制器,检查它是否被取消,在每个视图控制器中,
覆盖deinit
打印(“ViewControllerName deinit”)
以便您知道它们正在removed@Knight0fDragon我正在使用以下代码交换视图控制器:
let storyboard=UIStoryboard(名称:“Main”,bundle:nil)让vc=storyboard.instantialeviewcontrollerwhiteIdentifier(“menuViewController”)作为!menuViewController presentViewController(vc,动画:true,完成:nil)
但是当你说打印(“viewcontrollername deinit”)时,如果它认为它没有像我说的那样工作,你只是在一个接一个地添加视图控制器,实际上是在构建一个视图控制器塔,如果它不起作用,那就意味着你没有移除旧的
@IBAction func goToMenu(sender: AnyObject) {
    let storyboard = UIStoryboard(name: "Main", bundle: nil)
    let vc = storyboard.instantiateViewControllerWithIdentifier("menuViewController")
    self.presentViewController(vc, animated: true, completion: nil)
}

override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?)
{
    if segue.identifier == "gameToMenu" {
        let destinationController = segue.destinationViewController as! menuViewController
            destinationController.x = true
    }