2016-12-03 107 views
1

我有我的GameViewController包含一個SCNView。我可以繼續使用我的GameViewController,但是當我的玩家死亡時,我嘗試繼續使用我的GameOverVC,但它不會繼續。我知道代碼被調用,因爲我打印了一些東西給控制檯。故事板中設置了segue。UIViewController不會延續到另一個UIViewController?

enter image description here

我Segue公司通過調用

self.performSegue(withIdentifier: "gameOver", sender: self) 

我已經在多個應用做到了這一點,但我不明白,爲什麼這是行不通的。這是我與SceneKit的第一個應用程序,所以我不知道這是否會改變任何東西,但任何幫助表示讚賞!

此外

如果我嘗試

let vc = self.view.window?.rootViewController 

vc?.present(GameOverVC(), animated: true, completion: nil) 

然後它呈現的UIViewController,但它並沒有顯示任何東西我都在視圖中添加?

+0

更新你的問題,你的故事板,你把繼續。 –

+0

它的名字?或者你的意思是一張圖片? –

+0

圖片顯示segue標識符 –

回答

1

不知何故,我遇到了同樣的問題,打電話來救我: 我做了這樣的事情:

DispatchQueue.main.asyncAfter(deadline: .now()) { 

     self.performSegue(withIdentifier: "gameOver", sender: self) 
    } 

如果你需要從對象繼承的類,你需要將parentViewController的ref傳遞給你的對象,並撥打電話,是不是一個視圖控制器來Segue公司像這樣:

DispatchQueue.main.asyncAfter(deadline: .now()) { 

     parentViewController.performSegue(withIdentifier: "gameOver", sender: self) 
    } 
+0

這解決了我的問題!我不確定爲什麼像@Lion這樣的常規方法這次沒有發揮作用,但我希望有人能告訴我爲什麼必須按照我的情況這樣做。 –

+0

這個問題需要我幾天。我不知道爲什麼普通segue不工作。如果你明白它爲什麼這樣工作,讓我知道... –

0

您可以嘗試以下操作: -

UIViewController *vc = self.view.window.rootViewController; 
[vc performSegueWithIdentifier:@"id" sender:nil]; 
+0

當我嘗試這個我的應用程序崩潰並打印'接收器()沒有與標識符'gameOver''segue –

+0

你可以在場景中獲取scene.viewcontroller對象嗎?如果是,那麼執行對該對象的爭奪。 –

+0

不,我不明白 –

1

segue作品UIVIewControllers不是爲SpriteKit scenes。所以,你需要從parent viewcontroller執行SEGUE,所以你可以做這樣的事情,

self.parentViewController.performSegue(withIdentifier: "gameOver", sender: self) 

或由@ZeMoon in this answer提到的,你可以讓你的viewcontroller的財產SKScene類,你可以在這個屬性類似執行SEGUE ,

class GameScene: SKScene { 
    var viewController: UIViewController? 
    ... 
} 

然後,在類的viewController,之前skView.presentScene(scene)做,

scene.viewController = self 

現在您可以執行SEGUE一樣,

self.viewController.performSegueWithIdentifier("gameOver", sender: self.viewController) 

OR

忘記segue只是實例化GameOverVC,推動它的導航控制器上一樣,

let nav = self.view.window?.rootViewController as! UINavigationController 

    nav.pushViewController(gameOverVC, animated: true) 

或者

self.navigationController?.pushViewController(gameOverVC, animated: true) 
+0

沒有這些在我的情況下工作 –

相關問題