2016-01-20 66 views
-1

2016-01-19 23:21:15.132 Test2 [86049:25427867] ***由于未捕获异常'NSInvalidArgumentException',原因:'Receiver()没有标识符'gameSegue'正在执行准备工作

override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) { 
    if segue.identifier == "gameSegue"{ 
     let gameViewController = segue.destinationViewController as! GameViewController 
     gameViewController.performSegueWithIdentifier("gameSegue", sender: gameViewController) 
    } 
} 

    viewController = MainMenuViewController() 
    let segue = UIStoryboardSegue(identifier: "gameSegue", source: MainMenuViewController(), destination: GameViewController()) 
    viewController.prepareForSegue(segue, sender: self) 

我得到上面每当我打电话prepareForSegue功能

+0

检查[这些搜索结果](http://stackoverflow.com/search?q=%22has+no+segue+with+identifier%22+NSInvalidArgumentException+%5Bswift%5D)。 – rmaddy

回答

0

的错误更换

let gameViewController = segue.destinationViewController as! GameViewController 
gameViewController.performSegueWithIdentifier("gameSegue", sender: gameViewController) 


viewController = MainMenuViewController() 
let segue = UIStoryboardSegue(identifier: "gameSegue", source: MainMenuViewController(), destination: GameViewController()) 
viewController.prepareForSegue(segue, sender: self) 

随着

let detailedView = GameViewController() 
    if let detailedView = segue.destinationViewController as? GameViewController { 
     // Do whatever passing of parameters here.   
    } 

将segue代码添加到您要调用的位置。

performSegueWithIdentifier("gameSegue", sender: nil) 
+0

我不知道这是如何解决我的问题 – user3856516

+0

在您的主要故事板中,在属性检查器下,您是否在标识符下面设置了gameSegue? – jo3birdtalk

+0

我确实将它设置为 – user3856516

0

的代码似乎表明,你想要么两个级联塞格斯(与两个控制器相同的名称),或者你正试图重定向到一个不同的控制器。

这真的是你想要做的吗?

currentController - >“gameSegue” - > gameViewController - >“gameSegue” - > ???

当触发segue时(例如从故事板),prepareForSegue和performSegueWithIdentifier都会自动调用。你不必自己调用performSegueWithIdentifier。

+0

我想要做的是从我的mainmenuviewcontroller去我的gameviewcontroller。我试图通过SpriteKit来做到这一点 – user3856516

+0

当我在屏幕上点击时,我试图继续下去 – user3856516

+0

如果这个segue被触发,那么prepareForSegue应该没有什么可做的。你应该删除整个功能。如果在此之后仍然出现错误,这将是一个不同的错误,可能是问题的根本原因。现在,这段代码是你所看到的错误的来源,并且可能掩盖了这个问题(如果有的话) –