gpt4 book ai didi

ios - 如何正确切换到不同的 ViewController

转载 作者:行者123 更新时间:2023-11-28 13:05:22 24 4
gpt4 key购买 nike

您好,我已经设置了代码,应该可以正确地从 GameScene 转到另一个 View Controller mainMenuViewController。我为实现这一目标而设置的代码是

var viewController: GameViewController!
func segue() {
viewController.dismissViewControllerAnimated(true, completion: nil)
SettingsViewController.delete(self)
}

在游戏 View Controller 中

class GameViewController: UIViewController {

override func viewDidLoad() {
super.viewDidLoad()
let skView = view as! SKView
let scene = GameScene(size: skView.bounds.size)

skView.showsFPS = true
skView.showsNodeCount = true
skView.ignoresSiblingOrder = false
//skView.showsPhysics = true
scene.scaleMode = .AspectFill
skView.presentScene(scene)
scene.viewController = self
}

}

当点击 SKLabelNode 时调用。我收到了使用它的建议,因为 mainMenu 是玩家开始游戏时首先加载的场景,他们会转到 gameScene,所以我被告知要关闭 GameScene 而不是每次都创建一个新的 segue。我收到错误“ fatal error :在展开可选值时意外发现 nil”,并在点击按钮时崩溃。我假设它是在谈论 viewController。感谢您的帮助!

最佳答案

如果正确理解您的问题,您正在尝试关闭 GameViewController。但是方法 dismissViewControllerAnimated 只会解除您当前正在呈现的 Controller 。因此,由于您的游戏 View Controller 没有显示任何内容,因此无法将其关闭。正如您从代码到 GameViewController 所说的那样,关闭了他提供的 Controller ,它会尝试按照您的意愿进行操作,以便他获得所呈现的 View Controller 的属性并尝试关闭它,但是该属性为零,因此会出现此类错误。要解决此问题,您应该调用 viewController.presentingViewController.dismissViewControllerAnimated(true, completion: nil) 。属性 presentingViewController 返回呈现给您的 Controller ,在您的情况下是呈现 GameViewController 的 Controller 。当您获得此 Controller 时,您可以关闭他提供的 Controller (在您的情况下,提供的 Controller 是您的 GameViewController)。所以逻辑就是说“父” Controller 有权解雇你自己(GameViewController)

关于ios - 如何正确切换到不同的 ViewController,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32983979/

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