Ios 如何利用不同的类切换SceneKit视图

Ios 如何利用不同的类切换SceneKit视图,ios,scenekit,swift-playground,Ios,Scenekit,Swift Playground,我有三个sceneKit视图,希望用户看到。这是一个Xcode操场,所以我没有故事板,否则这会很简单。当某个布尔值变为true或false时,我需要更改操场的liveView 我曾尝试使用if语句检查这两个布尔值是否为false或true,然后根据它们更改我的liveView,但问题是,设置liveView的代码只运行一次,这意味着它将始终坚持第一次分配的视图 physics = false lit = true if(lit == true) {

我有三个sceneKit视图,希望用户看到。这是一个Xcode操场,所以我没有故事板,否则这会很简单。当某个布尔值变为true或false时,我需要更改操场的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
    }



我想这是不断运行,以便我可以切换意见时,必要的,这是可能的吗?如果没有,我还可以做些什么来执行我想要的?

我建议将其放在物理变量的
didSet
中。另一种可能的方法是将现有代码包装在一个函数中,并生成另一个更改变量的函数。调用第二个函数时,应调用第一个函数。这样可以确保在显式更改变量时运行此代码。但是,我强烈建议为此使用
didSet
,因为它在每次变量更改时都会运行。 如果你感到困惑,这里有几个例子

class ExampleClass {
    var boolean : Bool {
        switchViews()
    }
    func switchViews(){
        //Code here
    }
}
每当
boolean
更改值时,就会调用
switchview()。下一个示例使用双函数方法

var boolean:Bool = true
func changeBoolean(_ to:Bool){
    boolean = to
    switchViews()
}
func switchViews(){
    //Code here
}
//Changes boolean value and calls switchViews()
changeBoolean(false)

如前所述,这是另一种方式。我推荐第一种。希望这有帮助,并让我知道上面的代码是否包含bug或不起作用。

我建议将其放在物理变量的
didSet
中。另一种可能的方法是将现有代码包装在一个函数中,并生成另一个更改变量的函数。调用第二个函数时,应调用第一个函数。这样可以确保在显式更改变量时运行此代码。但是,我强烈建议为此使用
didSet
,因为它在每次变量更改时都会运行。 如果你感到困惑,这里有几个例子

class ExampleClass {
    var boolean : Bool {
        switchViews()
    }
    func switchViews(){
        //Code here
    }
}
每当
boolean
更改值时,就会调用
switchview()。下一个示例使用双函数方法

var boolean:Bool = true
func changeBoolean(_ to:Bool){
    boolean = to
    switchViews()
}
func switchViews(){
    //Code here
}
//Changes boolean value and calls switchViews()
changeBoolean(false)

如前所述,这是另一种方式。我推荐第一种。希望这有帮助,让我知道如果上面的代码包含bug或不起作用。

另一件事,你应该使用<代码>开关<代码>代替<代码>。如果< /代码> Hi @ Ritz兽,如果这个或任何答案已经解决了你的问题,请点击检查标记来考虑。这向更广泛的社区表明,你已经找到了一个解决方案,并给回答者和你自己带来了一些声誉。没有义务这样做。另一件事,你应该使用<代码>开关>代码>代替<代码>。否则,如果<或代码> HI Ritz兽,如果这个或任何答案已经解决了你的问题,请考虑点击检查标记。这向更广泛的社区表明,你已经找到了一个解决方案,并给回答者和你自己带来了一些声誉。没有义务这样做。