2016-01-20 117 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應該沒有什麼可做的。你應該刪除整個功能。如果在此之後仍然出現錯誤,這將是一個不同的錯誤,可能是問題的根本原因。現在,這段代碼是你所看到的錯誤的來源,並且可能掩蓋了這個問題(如果有的話) –