2016-01-20 1 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.   
    } 

Добавить код сегмента, на который вы будете ссылаться.

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

Я не уверен, как это решает мою проблему. – user3856516

+0

В вашей основной раскадровке, в разделе Attributes Inspector, вы установили gameSegue под идентификатором? – jo3birdtalk

+0

Я установил его на то, что – user3856516

0

код, кажется, указывает, что вы хотите либо каскадные два перетекает (с тем же именем на обоих контроллере) или вы пытаетесь перенаправить на другой контроллер.

Действительно ли это то, что вы пытаетесь сделать?

currentController -> "gameSegue" -> gameViewController -> "gameSegue" -> ???

Когда сгенерируется segue (например, из раскадровки), оба метода prepareForSegue и performSegueWithIdentifier вызываются автоматически. Вам не нужно вызывать performSegueWithIdentifier самостоятельно.

+0

То, что я пытаюсь сделать, это перейти от моего mainmenuviewcontroller к моему игровому контроллеру. Я пытаюсь сделать это через SpriteKit – user3856516

+0

Я пытаюсь переписать, когда я нажимаю на экран – user3856516

+0

Если этот сеанс запущен, в prepareForSegue не должно быть ничего общего. Вы должны удалить всю функцию. Если после этого вы по-прежнему получаете сообщение об ошибке, это будет другая ошибка и, вероятно, основная причина проблемы. Прямо сейчас этот код является источником ошибки, которую вы видите, и потенциально маскирует проблему (если она есть) –