2016-12-03 68 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

没有这些在我的情况下工作 –

相关问题