gpt4 book ai didi

ios - 如何从我的 GameScene.swift 中关闭 ViewController?

转载 作者:可可西里 更新时间:2023-11-01 00:59:29 24 4
gpt4 key购买 nike

问题如何从我的 GameScene.swift 中关闭 ViewController?


情况:我的 SpriteKit 游戏中有 2 个 VC,如下所示:

ViewController.swift ----按播放-----> GameViewController

当玩家失败时,我想关闭 GameViewController,以便玩家可以再次按下播放键。我在我的 GameScene.swift 中检查玩家是否丢失,并想从那里关闭 GameVC。


N.B.:用谷歌搜索没有成功。


我尝试了什么:

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 传递一个对 View Controller 的引用,以便它可以关闭它,或者使用委托(delegate)模式向后向控制对象传达 VC 应该关闭/关闭本身。

一个简单的例子……你可以在 GameScene 中添加一个 GameViewController 属性,然后在适当的时候关闭 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
}

这种简单的方法将紧密耦合 GameSceneGameViewController,如果您想要单独使用这些对象中的一个,就会变得有点困难。但对于这个简单的用例,它可能没问题。

关于ios - 如何从我的 GameScene.swift 中关闭 ViewController?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37366763/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com