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

时间:2019-03-24 21:10:47

标签: ios scenekit swift-playground

我希望用户看到三个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
    }


我希望它能够不断运行,以便在需要时可以切换视图,这可能吗?如果不是,我还能做什么来执行自己想要的?

1 个答案:

答案 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)

如上所述,这是另一种方式。我会推荐第一个。希望对您有所帮助,并让我知道上面的代码是否包含错误或无效。