问题:如何从GameScene.swift中关闭ViewController?
情况:我的SpriteKit游戏中有2个VC,如下所示:
ViewController.swift ----按Play -----> GameViewController
当玩家失败时,我想关闭GameViewController,以便玩家可以再次按一下play。我在GameScene.swift中检查玩家的损失,并希望从那里解散GameVC。
注意:用谷歌搜索没有成功。
我尝试过的是:
1)在我的GameScene.swift中创建一个gameVC实例并将其关闭,如下所示:
let gameVC = GameViewController()
gameVC.dismissViewController(false,completion: nil)
2)做:
self.view.window!.rootViewController?.dismissViewControllerAnimated(false, completion: nil)
那些由于明显的原因而无法工作^^
您不想“抢”现有实例:https : //pragprog.com/articles/tell-dont-ask
您需要GameScene
将对引用的引用交给视图控制器,以便可以将其关闭,或者使用委托模式向后传递给控制对象,以使VC被关闭/关闭。
一个简单的例子……您可以在中添加一个GameViewController
属性GameScene
,然后在适当的时候关闭VC:
class GameScene: SKScene {
var gameVC: GameViewController?
func gameDidEnd() {
gameVC?.dismissViewControllerAnimated(true) {
// if desired, do any cleanup after the VC is dismissed
}
}
}
然后,GameScene
首先在创建对象时设置此属性:
if let gameScene = GameScene(fileNamed: "MyScene") {
gameScene.gameVC = someGameVC
}
这种简单的方法将GameScene
与和紧密耦合GameViewController
,如果您想在不使用其他对象的情况下使用其中一个对象,则将变得更加困难。但是对于这个简单的用例,可能很好。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句