Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Swift 为什么赢了';我的场景不是在雨燕精灵套装中改变的吗?_Swift_Uiview_Sprite Kit - Fatal编程技术网

Swift 为什么赢了';我的场景不是在雨燕精灵套装中改变的吗?

Swift 为什么赢了';我的场景不是在雨燕精灵套装中改变的吗?,swift,uiview,sprite-kit,Swift,Uiview,Sprite Kit,每当UISegmentedControl更改索引时,我都会尝试更改场景,并且我的函数正在运行,但场景没有更改。我所有的场景都继承了这个函数所在的类,我想知道这是否是问题所在,我该如何解决它 这是我的代码: func valueChanged(){ run(tapSound) let sceneto = scenes[segment.selectedSegmentIndex] let trans = SKTransition.fade(with: .white, durat

每当
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”,所以我想知道如果它不打印“na”,那么这一定意味着
self!==场景为!SKScene
。如果
sceneto
不是
SKScene
(因为您使用
as!
而不是
as?
),则会崩溃

如果
view?.presentScene(sceneto as!SKScene,transition:trans)
什么也不做(没有崩溃,不是转换到错误的场景,而是什么都不做),那么这就意味着
视图?
实际上是
nil

来自场景类引用()

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


能否在
呈现场景之前添加打印((视图)

我很确定它失败了,因为
self
的场景根本不等于
sceneto
。如果没有打印“na”,则If语句失败。此外,您可能希望打印“sceneto”以查看它等于什么。仅当场景与其尝试过渡到的场景相同时,该部分才应工作,该部分甚至没有被调用,并且场景仍然不会过渡。仅在停止工作后进行过渡。场景数组是什么?什么类型?场景都是该函数所在的同一类型类,因为它们都继承了该类。因此,假设场景为零,我如何将其添加到视图中,以便我可以过渡到它?Chris-您是否确认
视图是否为零?是的,在第一次场景过渡后,视图将变为零。我该怎么解决这个问题呢?我被你的回答弄糊涂了,然后我认为你需要遵循苹果文档的思路,并假设没有呈现代码运行的场景。现在,它第一次起作用,因此代码随后出现在呈现的场景中,但之后就不再起作用了。这只是一个猜测,但是分段控件是否在特定场景中调用函数,该场景在第一次转换到另一个场景后不再是当前场景?我认为我们需要看更多的代码来确定确切的问题。片段从每个场景继承的类中调用一个函数,因此每个场景本质上都有这个函数