【发布时间】:2016-05-09 22:33:41
【问题描述】:
我想在游戏结束后关闭 SKScene 并返回主菜单。
从 MainViewController 到 GameViewController,我用 prepareForSegue 做了一个 Storyboard Segue,将一些数据从 MainViewController 传递到 GameViewController
在GameViewController中,我做了这样的:
override func viewDidLoad() {
super.viewDidLoad()
if let scene = GameScene(fileNamed:"GameScene") {
let skView = self.view as! SKView
skView.showsFPS = true
skView.showsNodeCount = true
skView.ignoresSiblingOrder = true
scene.scaleMode = .AspectFill
skView.presentScene(scene)
scene.viewController = self
}
}
然后,我在 GameScene.swift 中声明了 View Controller,如下所示:
weak var viewController:GameViewController? = GameViewController()
我在GameScene.swift中也有如下函数调用endGameScene.swift:
func endGame() {
// 1
gameOver = true
// 2
// Save high score
GameState.sharedInstance.saveState()
// 3
let reveal = SKTransition.fadeWithDuration(0.5)
let endGameScene = EndGameScene(size: self.size)
self.view!.presentScene(endGameScene, transition: reveal)
}
最后,endGameScene.swift 像这样调用dismissViewControllerAnimated:
weak var viewController:GameViewController? = GameViewController()
override func touchesBegan(touches: Set<UITouch>, withEvent event: UIEvent?) {
// Transition back to the Game
/*let reveal = SKTransition.fadeWithDuration(0.5)
let gameScene = GameScene(size: self.size)
self.view!.presentScene(gameScene, transition: reveal)*/
print(viewController)
self.viewController?.dismissViewControllerAnimated(true, completion: nil)
}
不幸的是,print(viewController) 返回 nil,当然,它不会关闭 ViewController。
我在哪里犯错了?
【问题讨论】:
标签: ios swift sprite-kit