J'ai ce storyboard:
Avec ce ViewController:
J'ai ce code pour instancier mon VC:
let VC = UIStoryboard(name: "Main_iPhone", bundle: nil).instantiateViewControllerWithIdentifier("POIListViewController")
Quand je cours sur simulateur, tout fonctionne à toi.
Mais lorsque je lance sur un appareil réel, j'ai cette exception:
2016-07-12 10:56:19.073 App-Ely[1935:562264] *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: 'Storyboard (<UIStoryboard: 0x185481b0>) doesn't contain a view controller with identifier 'POIListViewController''
*** First throw call stack:
(0x2a23b5f7 0x37aadc77 0x2dc36f25 0x182b8c 0x182dd0 0x12d99f 0x2a1f3f15 0x2a14ee4d 0x2ae83ec1 0x13e0d5 0x168a2d 0x2d7f9607 0x2d8ab0a7 0x2d75d1f1 0x2d6d8eff 0x2a202015 0x2a1ff6f9 0x2a1ffafb 0x2a14cb31 0x2a14c943 0x3152c051 0x2d7426f1 0x16fce3 0x38049aaf)
libc++abi.dylib: terminating with uncaught exception of type NSException
ÉDITER :
J'ai mon storyboard correctement chargé:
let storyboard = UIStoryboard(name: "Main_iPhone", bundle: nil)
// 'storyboardName' contains "Main_iPhone"
let storyboardName : String = storyboard.valueForKey("name") as! String
let VC = storyboard.instantiateViewControllerWithIdentifier("POIListViewController")
let storyboard = UIStoryboard(name: "Main_iPhone", bundle: nil)
let vc = storyboard.instantiateViewControllerWithIdentifier("POIListViewController") as! UIViewController
MODIFIER
Nettoyez simplement votre projet (CMD + SHIFT + K) car vous avez changé le nom du storyboard je pense.
Fermez votre projet et ouvrez-le à nouveau. Si vous avez remarqué que l'identifiant a disparu, cela doit être un problème de sauvegarde automatique. Enregistrez simplement votre fichier de storyboard après avoir mis votre nouvel identifiant. et Clean-Build-Run.
J'ai eu un tel problème à cause d'une copie du fichier de localisation. Peut-être que le simulateur inclut l'anglais, mais ce gadget a sa propre langue. Voyez si vous avez un storyboard avec deux fichiers de localisation?
J'ai eu un problème similaire (sauf que ce n'était pas seulement sur l'appareil).
Aucune des suggestions précédentes dans ce fil n'a fonctionné pour moi. Ce qui fonctionnait allait à l'inspecteur d'identité (dans le volet Utilitaires de droite) et s'assurait que le champ ID du storyboard était également rempli avec le nom du contrôleur de vue (même nom que le champ Classe au-dessus).
Essayez de le changer en:
let VC = self.storyboard!.instantiateViewControllerWithIdentifier("POIListViewController") as! POIListViewController