当您按下按钮时,会执行自定义segue以开始游戏:
self.performSegueWithIdentifier("segueToGame", sender: nil)
我正在使用精灵套件。我在GameViewController
和GameScene
中进行了设置,这样您就可以玩,直到您输了游戏,并且当您执行游戏时,游戏会向视图控制器发送消息,告知它将切换回初始视图控制器。我这样做如下:
let notificationCenter = NSNotificationCenter.defaultCenter()
class GameViewController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
/*
All code to set the scene is there
*/
skView.presentScene(scene)
notificationCenter.addObserver(self, selector: "segueToHomeScreen", name: "segueToHomeScreen", object: nil)}
override func viewDidDisappear(animated: Bool) {
if self.isBeingDismissed() {
println("Dismissed Vc")
}else {
println("still here")
}
}
func segueToHomeScreen(){
self.performSegueWithIdentifier("segueToHomeScreen", sender: nil)
}
在我的GameScene中,当你输掉比赛时我使用的代码是:
func segueToHomeScreen() {
notificationCenter.postNotificationName("segueToHomeScreen", object: nil)
}
问题是,当我回到主屏幕时,GameScene还没有完全停止。我发现了两件事。一,你在上面看到的viewDidDisapper
函数,我得到一条"仍在这里"的日志消息。二,在gameScene中我使用了这个
override func update(currentTime: CFTimeInterval) {
/* Called before each frame is rendered */
println("Scene On")
}
当您输掉游戏并返回主屏幕时,此功能仍在运行。 如何在执行segue到主屏幕后停止运行ViewController和GameScene?
确定这是否相关,但我也收到错误消息:
警告:尝试在视图不在窗口层次结构中的* on *上显示!