2015-06-10 17 views
1

我有兩個視圖,第一個可以正常工作,第二個視圖是在我從第一個視圖上的按鈕轉換到第二個視圖後顯示的。爲什麼我的第二個視圖在轉換之後加載?

但是,當我點擊按鈕,轉換髮生,屏幕變爲空白。

以下是UIViewController類中viewDidLoad的第二種視圖。

此外,當它撞擊

let sKView = view as! SKVIEW 

線它吐出型 '的UIView'(0x10a313eb0)到 'SKView'(0x1094d5718)的

無法投值。
(lldb)

如何獲取它以顯示視圖?

class PlayViewController: UIViewController { 

    var scene2: PlayScene! 

override func viewDidLoad() { 
    super.viewDidLoad() 

    let skView = view as! SKView 
    skView.showsFPS = true 
    skView.showsNodeCount = true 

    scene2 = PlayScene(size: skView.bounds.size) 

    skView.ignoresSiblingOrder = true 

    /* Set the scale mode to scale to fit the window */ 
    scene2.scaleMode = .AspectFill 

    skView.presentScene(scene2) 
} 

一流

類GameViewController:UIViewController的{

override func viewDidLoad() { 
    super.viewDidLoad() 

    if let scene = GameScene.unarchiveFromFile("GameScene") as? GameScene { 
     // Configure the view. 
     let skView = self.view as! SKView 
     skView.showsFPS = true 
     skView.showsNodeCount = true 

     /* Sprite Kit applies additional optimizations to improve rendering performance */ 
     skView.ignoresSiblingOrder = true 

     /* Set the scale mode to scale to fit the window */ 
     scene.scaleMode = .AspectFill 

     skView.presentScene(scene) 
    } 
} 

第二現場

import SpriteKit 

class PlayScene: SKScene { 
    override func didMoveToView(view: SKView) { 
     /* Setup your scene here */ 
     let myLabel = SKLabelNode(fontNamed:"Chalkduster") 
     myLabel.text = "SCENE 2!"; 
     myLabel.fontSize = 65; 
     myLabel.position = CGPoint(x:CGRectGetMidX(self.frame), y:CGRectGetMidY(self.frame)); 

     self.addChild(myLabel) 
    } 

    override func touchesBegan(touches: Set<NSObject>, withEvent event: UIEvent) { 
     /* Called when a touch begins */ 

     for touch in (touches as! Set<UITouch>) { 
      let location = touch.locationInNode(self) 

      let sprite = SKSpriteNode(imageNamed:"Spaceship") 

      sprite.xScale = 0.5 
      sprite.yScale = 0.5 
      sprite.position = location 

      let action = SKAction.rotateByAngle(CGFloat(M_PI), duration:1) 

      sprite.runAction(SKAction.repeatActionForever(action)) 

      self.addChild(sprite) 
     } 
    } 

    override func update(currentTime: CFTimeInterval) { 
     /* Called before each frame is rendered */ 
    } 
} 
+0

你得到錯誤的原因說明。視圖控制器的視圖不是'SKView'。這是一個普通的'UIView'。 – rmaddy

回答

0

問題看中的是你的視圖控制器的看法是你的工廠的UIView的日常運行,而不是一個SKView。假設您正在使用故事板,請單擊視圖控制器,然後單擊視圖並將類更改爲SKView而不是UIView。

enter image description here

希望幫助。

+0

之上發佈,感謝您分配了易於理解的解決方案,但是在類下拉菜單中,沒有SKView的選項。我需要做其他事嗎? – Matt

+0

是的,這是Xcode的一個奇怪的錯誤,如果你只是鍵入它應該爲你工作。 –

+0

哦,它現在有用! – Matt

0

我不知道什麼是你想存檔,您可以嘗試改變你的超類從UIViewControllerSpriteViewController或者你可以創建一個ew SKView並附加到您的視圖。

不能垂頭喪氣一個UIView到SKView作爲SKView從UIView的繼承,你可以在apple documentation

Inherits From 
    NSObject 
    UIResponder 
     UIView 
     SKView 
+0

我只想指出,我是新手,我剛剛在兩週前開始自我介紹,無論如何,我在第一個ViewController中創建了一個Identicle,它工作正常,所有即時嘗試都要重置現場到我創建的不同SKScene類 – Matt

+0

你還可以發佈你的第一堂課嗎?所以我們可以嘗試看看發生了什麼 – Icaro

+0

它的標準配備了一個新的精靈套件遊戲,它剛剛在 – Matt

相關問題