Swift 完全无视现场

Swift 完全无视现场,swift,uiviewcontroller,skscene,dismiss,Swift,Uiviewcontroller,Skscene,Dismiss,好的,我有一个应用程序,它从一个菜单视图控制器开始,提示用户按下4ish按钮中的一个,然后加载一个视图控制器,然后显示一个场景,用户根据按下的按钮玩游戏 然后,我将用户重定向到另一个viewcontroller,一旦满足条件(他们将输掉游戏),它将呈现另一个场景。唯一的问题是,第二个viewcontroller(我假设它是场景)仍在运行。我知道这一点,因为我在它的override函数update方法中有一个print语句,以查看它是否仍然存在 此外,我的旧游戏机中有音频播放,目前仍在播放。我并不

好的,我有一个应用程序,它从一个菜单视图控制器开始,提示用户按下4ish按钮中的一个,然后加载一个视图控制器,然后显示一个场景,用户根据按下的按钮玩游戏

然后,我将用户重定向到另一个viewcontroller,一旦满足条件(他们将输掉游戏),它将呈现另一个场景。唯一的问题是,第二个viewcontroller(我假设它是场景)仍在运行。我知道这一点,因为我在它的override函数update方法中有一个print语句,以查看它是否仍然存在

此外,我的旧游戏机中有音频播放,目前仍在播放。我并不介意,因为稍后我将在所有3个ViewController及其显示的场景之间传递音频数据(全部静音)

现在唯一的问题是,当我运行应用程序时,因为旧的viewiewcontroller和它的场景似乎仍在运行,它不断调用转换,这会在条件满足时导致奇怪的外观,过渡将无休止地循环到新的viewcontroller,然后返回到过渡的开始,然后再次循环到新的viewcontroller

我试过这段代码:

let theVC = self.viewController?.storyboard?.instantiateViewController(withIdentifier: "TrumpVC") as! TrumpViewController

self.viewController?.navigationController?.pushViewController(theVC, animated: true)

self.viewController?.dismiss(animated: true, completion: {});
但它似乎一点帮助都没有:(本质上,我导航到一个新的viewcontroller,并关闭当前的一个(这都在我的场景中)

谢谢

解决方案:

let theVC = self.viewController?.storyboard?.instantiateViewController(withIdentifier: "TrumpVC") as! TrumpViewController

self.viewController?.navigationController?.pushViewController(theVC, animated: true)
self.viewController?.removeFromParentViewController()
self.viewController?.dismiss(animated: true, completion: nil)
self.view?.presentScene(nil)
解决方案:

let theVC = self.viewController?.storyboard?.instantiateViewController(withIdentifier: "TrumpVC") as! TrumpViewController

self.viewController?.navigationController?.pushViewController(theVC, animated: true)
self.viewController?.removeFromParentViewController()
self.viewController?.dismiss(animated: true, completion: nil)
self.view?.presentScene(nil)