Я хотел бы закрыть SKScene после игры и вернуться в главное меню.Swift, SpriteKit, Segue между GameViewController и MainViewController после GameOver
От MainViewController к GameViewController, я сделал раскадровки SEGUE с prepareForSegue передать некоторые данные из 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
}
}
А потом Я объявил View Controller в GameScene.swift, как это:
weak var viewController:GameViewController? = GameViewController()
у меня также есть в GameScene.sw IFT следующей функции для вызова 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)
}
Unfortunatly, печать (ViewController) возвращает ноль, и, конечно, это не закрывайте ViewController.
Где я могу сделать ошибку?