2015-06-10 2 views
1

У меня есть два вида, первый из которых отлично работает, и второй, который я пытаюсь отобразить после перехода на него с кнопки на первом представлении.Почему мой второй просмотр не загружается после перехода?

Однако, когда я нажимаю кнопку, происходит переход, и экран гаснет.

Ниже приведено viewDidLoad внутри класса UIViewController для второго вида.

Кроме того, когда он попадает в линию

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

Я не уверен, что вы пытаетесь в архив, вы можете попробовать изменения ваш суперкласс от UIViewController до SpriteViewController или вы можете создать ew SKView и добавить к вашему виду.

Вы не можете обратное приведение в UIView к SKView как SKView наследовать от UIView, как вы можете видеть в apple documentation

Inherits From 
    NSObject 
    UIResponder 
     UIView 
     SKView 
+0

Я хотел бы отметить, что я новичок в этом, я только начал учиться около двух недель назад, так или иначе, у меня почти идентичный набор, установленный в моем первом ViewController, и он отлично работает, все, что я пытаюсь сделать, это сбрасывать сцена для другого класса SKScene, который я создал – Matt

+0

Можете ли вы также опубликовать свой первый класс? Таким образом, мы можем попытаться увидеть, что происходит. – Icaro

+0

Его стандарт, который поставляется с новой версией комплекта спрайтов, только что опубликовал его выше – Matt

Смежные вопросы