title: whose view is not in the window hierarchy
body: <p>I am developing a game and I am trying to move from my game scene to my view controller but it gives me the error:</p>
  
  <blockquote>
    <p>Warning: Attempt to present &lt;Breakout.GameViewController: 0x7f8874d19ed0> on  whose view is not in the window hierarchy!.</p>
  </blockquote>
  
  <p>My game is set up so I do level 1 and finish it then it takes me to the vc where I can do level 1. That works, but then when I finish level 2 and try to go back to the vc, it does not work and gives me the error.</p>
  
  <p>I have looked at other posts but nothing has directly linked to this.</p>
  
  <p>My Game Scene Controller:</p>
  
  <pre><code>class Level1: SKScene,SKPhysicsContactDelegate {
      var ball:SKSpriteNode!
      var paddle:SKSpriteNode!
      var scoreLabel:SKLabelNode!
      var score:Int = 0 {
          didSet{
              scoreLabel.text = "Score:\(score)"
          }
      }
  
      override func didMove(to view: SKView) {
          ball = self.childNode(withName: "Ball") as! SKSpriteNode
          paddle = self.childNode(withName: "Paddle") as! SKSpriteNode
          scoreLabel = self.childNode(withName: "Score") as! SKLabelNode
  
          ball.physicsBody?.applyImpulse(CGVector(dx: 50, dy: 50))
          ball.physicsBody?.mass=0.1
          let border = SKPhysicsBody(edgeLoopFrom: (view.scene?.frame)!)
          border.friction = 0
  
          self.physicsBody = border
          ball.physicsBody?.mass = 0.09
          self.physicsWorld.contactDelegate = self
      }
  
      override func touchesBegan(_ touches: Set&lt;UITouch&gt;, with event: UIEvent?) {
          for touch in touches {
              let touchLocation = touch.location(in: self)
              paddle.position.x = touchLocation.x
          }
      }
  
      override func touchesMoved(_ touches: Set&lt;UITouch&gt;, with event: UIEvent?) {
          for touch in touches {
              let touchLocation = touch.location(in: self)
              paddle.position.x = touchLocation.x
          }
      }
  
  
      func didBegin(_ contact: SKPhysicsContact) {
          let bodyAName = contact.bodyA.node?.name
          let bodyBName = contact.bodyB.node?.name
  
          if bodyAName == "Ball" &amp;&amp; bodyBName == "Brick" || bodyAName == "Brick" &amp;&amp; bodyBName == "Ball"{
              if bodyAName == "Brick" {
                  contact.bodyA.node?.removeFromParent()
                  score += 1
              } else if bodyBName == "Brick" {
                  contact.bodyB.node?.removeFromParent()
                  score += 1
              }
          }
      }
  
      override func update(_ currentTime: TimeInterval) {
          if (score == 9) {
              scoreLabel.text = "You Won!"
              self.view?.isPaused = true
              sleep(2)
              let mainStoryboard = UIStoryboard(name: "Main", bundle: nil)
              let vc = mainStoryboard.instantiateViewController(withIdentifier: "GameViewController")
              self.view?.window?.rootViewController?.present(vc, animated: true, completion: nil)
              level1done = true
          }
          if (ball.position.y &lt; paddle.position.y) {
              scoreLabel.text = "You Lost!"
              self.view?.isPaused = true
              sleep(2)
              let mainStoryboard = UIStoryboard(name: "Main", bundle: nil)
              let vc = mainStoryboard.instantiateViewController(withIdentifier: "GameViewController")
              self.view?.window?.rootViewController?.present(vc, animated: true, completion: nil)
          }
      }
  } 
  </code></pre>