Question: I am trying to transition from the default, root scene to a new scene with SpriteKit. However, whenever I press the Start button, it grays out the old scene (although it remains visible) and the Drawing Board label shows up. The scene remains greyed out. All the buttons from the old scene can still be pressed but do not perform their associated actions. A UIButton triggers this func:

```
startButton.addTarget(self, action: "goToDrawingBoard:", forControlEvents: UIControlEvents.TouchUpInside)

```

The func:

```
@objc func goToDrawingBoard(sender: UIButton){
    let drawingBoardScene = DrawingBoardScene(size: self.size)

    self.scene?.view?.presentScene(drawingBoardScene, transition: SKTransition.crossFadeWithDuration(1.0))
}

```

And the DrawingBoardScene.swift file:

```
import Foundation
import SpriteKit
import UIKit

class DrawingBoardScene: SKScene {

    let titleLabel = SKLabelNode(text: "DRAWING BOARD")

    override func didMoveToView(view: SKView) {           
        /*LABEL: Displays title*/
        titleLabel.fontColor = UIColor.blackColor()
        titleLabel.fontSize = 60
        titleLabel.position = CGPoint(x: CGRectGetMidX(self.frame), y: CGRectGetMidY(self.frame))

        self.addChild(titleLabel)
    }
}

```

Answer: 
Looks like you are presenting the scene incorrectly, try the following:

```
@objc func goToDrawingBoard(sender: UIButton){
    let drawingBoardScene = DrawingBoardScene(size: self.size)

    self.view?.presentScene(drawingBoardScene, transition: SKTransition.crossFadeWithDuration(1.0))
}

```

There is no reason to add the new scene as a child to the old scene, and who knows why your scene has a scene object.

As a personal note, presenting your scene in this matter is not a good way to present scenes. It is the views job to be presenting scenes, so what you should be doing is when it comes time for the scene to be removes, send a notification in some way to the view that the scene is done working and is waiting for it to be removed, and have the view then present the scene. This will allow the view to properly remove the old scene without having any retainers holding it back. One method to do this is threw delegation
My friend and I spent a couple nights working on various solutions and the one we finally came up with is this:

```
override func willMoveFromView(view: SKView) {
        self.removeAllChildren()
    delete(startButton)
}

override func delete(sender: AnyObject?) {
    let subviews = (self.view?.subviews)! as [UIView]
    for v in subviews {
        if let button = v as? UIButton {
            button.removeFromSuperview()
        }
    }
}

```

The only problem with this is that when the scene shifts the buttons can take a split second longer to disappear, giving it a kind of glitchy feel. It does work though, so for a short term solution it is great.