我希望用户看到三个sceneKit视图。这是一个Xcode Playground,所以我没有情节提要,否则这将非常简单。当某个布尔值变为true或false时,我需要更改Playground的liveView。
我尝试使用if语句检查两个布尔值是否为false或true,然后根据它们更改我的liveView,但问题是设置liveView的代码只运行一次,这意味着它将始终坚持首先分配的视图。
physics = false
lit = true
if(lit == true)
{
let vc = LitController()
vc.preferredContentSize = CGSize(width: 375, height: 812) //iPhone X
PlaygroundPage.current.liveView = vc
}
else if(physics == true)
{
let vc = PhysicsController()
vc.preferredContentSize = CGSize(width: 375, height: 812) //iPhone X
PlaygroundPage.current.liveView = vc
} else
{
let vc = MyViewController()
vc.preferredContentSize = CGSize(width: 375, height: 812) //iPhone X
PlaygroundPage.current.liveView = vc
}
我希望它能够不断运行,以便在需要时可以切换视图,这可能吗?如果不是,我还能做什么来执行自己想要的?
答案 0 :(得分:0)
我建议将其放置在物理变量的didSet
中。另一种可能的方式是将现有代码包装在一个函数中,并制作另一个更改变量的函数。第二个函数应在调用时调用第一个函数。这样可以确保在您显式更改变量时都运行此代码。但是,我强烈建议为此目的使用didSet
,因为它每次运行都会更改变量。
如果您感到困惑,这里有一些例子。
class ExampleClass {
var boolean : Bool {
switchViews()
}
func switchViews(){
//Code here
}
}
只要boolean
更改值,就会调用switchViews()
。下一个示例使用两个函数方法。
var boolean:Bool = true
func changeBoolean(_ to:Bool){
boolean = to
switchViews()
}
func switchViews(){
//Code here
}
//Changes boolean value and calls switchViews()
changeBoolean(false)
如上所述,这是另一种方式。我会推荐第一个。希望对您有所帮助,并让我知道上面的代码是否包含错误或无效。