【发布时间】:2017-05-03 02:42:32
【问题描述】:
我有一个拥有这个函数的类
func valueChanged() {
run(tapSound)
let sceneto = scenes[segment.selectedSegmentIndex]
let trans = SKTransition.fade(with: .white, duration: 1.5)
if view == nil {
print("view is nil")
} else {
view?.presentScene(sceneto, transition: trans)
print("ran",segment.selectedSegmentIndex,scenes.count)
}
}
我试图过渡到的每个场景都继承自这个类,所以它们都有这个功能。然而这个函数运行良好一次,场景改变,但第一次之后,视图一直返回 nil,我不明白为什么。该函数位于每个场景继承的类中,如果这有什么不同的话
【问题讨论】:
-
您的问题中没有足够的信息继续下去。
view是否与此函数在同一类中声明?是否应该在这些类之间共享一个SKView实例?view应该怎么设置? -
视图不是单独的视图类,所以这个类根本不应该删除视图,视图是在应用加载时设置的。
-
我认为您的问题不在于这段代码,而与
view变量有关,它的声明位置和方式以及设置方式。 -
如果视图为 nil,则表示该场景尚未呈现。比如在scene的init中,它的view属性为nil是正常的。
-
@ChrisHutchison 分段控件是否通过@IBOutlet 连接到视图控制器?这将不得不在您的类的实例中调用您的
valueChanged函数(您没有将它作为类方法调用)那么该调用是如何处理的?查看视图控制器的代码会非常有用。
标签: swift uiview sprite-kit skscene