在以编程方式进行segueing之后,ViewController尚未被解雇

时间:2015-06-12 01:49:09

标签: ios swift uiviewcontroller sprite-kit segue

当您按下按钮时,会执行自定义segue以开始游戏:

self.performSegueWithIdentifier("segueToGame", sender: nil)

我正在使用精灵套件。我在GameViewControllerGameScene中进行了设置,这样您就可以玩,直到您输了游戏,并且当您执行游戏时,游戏会向视图控制器发送消息,告知它将切换回初始视图控制器。我这样做如下:

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 *上显示!

0 个答案:

没有答案