为什么在swift精灵套件中改变了我的场景?

时间:2017-05-02 03:36:29

标签: swift uiview sprite-kit

我试图在UISegmentedControl更改索引并且我的功能正在运行时更改场景,但场景不会改变。我的所有场景都继承了这个函数所在的类,我想知道这是不是问题,我将如何解决它

这是我的代码:

func valueChanged(){
    run(tapSound)
    let sceneto = scenes[segment.selectedSegmentIndex]
    let trans = SKTransition.fade(with: .white, duration: 1.5)
    if self == sceneto as! SKScene{
        print("na")
        return
    }

    view?.presentScene(sceneto as! SKScene, transition: trans)

}

每次单击控制器时,该功能都会运行,并且场景甚至会在第一次运行时更改,但不会在第一次运行后更改。它只是在第一次运行后不会改变场景,而且它不打印" na"所以我想知道问题是什么

1 个答案:

答案 0 :(得分:0)

如果它不打印'na',则必须表示self !== sceneto as! SKScene。如果sceneto不是SKScene(因为您使用as!而不是as?),这会崩溃。

如果view?.presentScene(sceneto as! SKScene, transition: trans)什么也没做,(没有崩溃,没有过渡到错误的场景,但没有),那么这意味着view?实际上是nil

来自SKScene类引用(https://developer.apple.com/reference/spritekit/skscene/1519726-view

  

要显示场景,请调用presentScene( :)方法或   SKView类上的presentScene(:transition :)方法。如果现场   目前尚未出示,此属性为零。

您可以在presentScene之前添加打印(“(查看)”)吗?