Question
Il vous manque de l' initWithCoder
méthode sur l' destinationViewController
que vous essayez de présenter.
L' initWithCoder
méthode est appelée lorsque vous instanciez l' viewController
se référant à l' UIStoryboard
comme ceci: Instancier un viewController en Swift
Le problème semble être provoqué par différents initialiseur de comportement entre Swift et Objective-C.
Solution
Objective-C hérite automatiquement initWithCoder
c'est pourquoi nous n'avons pas besoin de l'ajouter à destinationViewController.
Swift nécessite l'ajout d' init(coder aDecoder: NSCoder!)
si vous avez init(nibName nibNameOrNil: String?, bundle nibBundleOrNil: NSBundle?)
sur votre destinationViewController.
1. Première méthode
Manuellement la mise en œuvre de init(coder aDecoder: NSCoder!)
en l'ajoutant le code ci-dessous pour destinationViewController.
init(coder aDecoder: NSCoder!)
{
super.init(coder: aDecoder)
}
2. Deuxième méthode
Retrait d' init(nibName nibNameOrNil: String?, bundle nibBundleOrNil: NSBundle?
à votre destinationViewController héritera de tous les initialiseurs de la super-classe comme @Dave Wood souligné.
//Code to be removed from your destinationViewController
init(nibName nibNameOrNil: String?, bundle nibBundleOrNil: NSBundle?) {
super.init(nibName: nibNameOrNil, bundle: nibBundleOrNil)
// Here you can init your properties
}
Mais si vous travaillez avec des XIB
fichiers et vous avez besoin d'init de l' properties
aussi, vous avez besoin de cette méthode. Il est donc dans votre propre mains à utiliser :)