2015-07-18 2 views
0

Я пытаюсь перейти к другому контроллеру представления, который отлично работает в симуляторе. Но когда это делать на устройстве он просто падает и обратный вызов говорит:Не удается выполнить переход к другому контроллеру просмотра только на устройстве. SWIFT

fatal error: unexpectedly found nil while unwrapping an Optional value

я получаю тот же обратный вызов я пытаюсь непосредственно перейти через раскадровки, как это:

func letsGoPressed(sender: UIButton!) { 

     performSegueWithIdentifier("goToQuestions", sender: self) 
} 

или если я пытаюсь instantiateViewControllerWithIdentifier вот так:

func letsGoPressed(sender: UIButton!) { 

     let questionsGameVC: QuestionsGame = self.storyboard?.instantiateViewControllerWithIdentifier("Questions") as! QuestionsGame 
     var modalStyle: UIModalTransitionStyle = UIModalTransitionStyle.CoverVertical 

    questionsGameVC.modalTransitionStyle = modalStyle 

    self.presentViewController(questionsGameVC, animated: true, completion: nil) 

    } 

Эти обе работают на симуляторе только не на устройстве! ??!

+0

Неужели все еще работает на вашем симуляторе, если вы перезагрузите симулятор и запустите его снова? Все еще работает на вашем устройстве, если вы удалите и переустановите приложение? Иногда раскадровки могут кэшироваться, что может привести к несогласованным результатам. –

+0

Спасибо! удалил его, и теперь он работает! странный... –

ответ

2

Похоже, что в кешированной версии раскадровки не было goToQuestions segue или контроллера вида с идентификатором Questions.

Также вы можете удалить : QuestionsGame здесь:

let questionsGameVC: QuestionsGame = self.storyboard?.instantiateViewControllerWithIdentifier("Questions") as! QuestionsGame 

Поскольку вы явно заливкой типа с использованием as!, нет никакой необходимости также объявить тип.