Je continue à avoir l'erreur suivante:
Storyboard (<UIStoryboard: 0x7ebdd20>) doesn't contain a view controller
with identifier 'drivingDetails'
C'est le code:
- (void)tableView:(UITableView *)tableView
didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
UIViewController *controller = [self.storyboard instantiateViewControllerWithIdentifier:@"drivingDetails"];
controller.title = [[dao libraryItemAtIndex:indexPath.row] valueForKey:@"name"];
[self.navigationController pushViewController:controller animated:YES];
}
J'ai déjà défini la identifier
sur la UIStoryboard
mais je reçois toujours cette erreur.
Fixé! Non seulement l'identifiant dans la séquence doit être défini, dans mon cas DrivingDetails, mais également l'identifiant dans mon tableViewController doit être défini comme DrivingDetails ... regardez ma photo:
J'ai également supprimé le contrôleur de vue de navigation afin que maintenant les 2 contrôleurs de vue de table soient connectés directement avec une animation "Push".
***** EDIT pour XCODE 7.0 *****
vous devez définir le storyboardId (dans ce cas, le viewController est incorporé dans un contrôleur de navigation:
let lastMinVc = mainStoryBoard.instantiateViewControllerWithIdentifier("lastMinuteNavController") as! UINavigationController
Juste pour référence future:
Je développe sur iOS 6 à l'aide de Storyboards.
J'avais le même problème, mais je n'ai pas trouvé le champ "Identifiant" dans l'inspecteur. A la place, définissez simplement le champ nommé "ID Storyboard" sur le nom que vous donneriez à l'identifiant. Ce champ se trouve sous l'onglet "Afficher l'inspecteur d'identité" dans l'inspecteur.
[Remarque - les commentaires ci-dessous indiquent que certaines personnes ont jugé nécessaire de définir (également?) Le champ "ID de restauration" juste en dessous de l'ID de Storyboard dans l'inspecteur. Cliquer sur "Utiliser l'ID du storyboard" ne semble pas être suffisant.]
Il y a une image ci-dessous pour référence: (dans cet exemple, j'ai nommé mon identifiant de la même façon que ma classe)
Dans XCODE 7 | 8 | 9,
lorsque vous modifiez les identifiants de storyboard et que vous obtenez des erreurs comme celle-ci,
juste CLEAN votre projet (CMD + SHIFT + K)
Parfois, il y a une confusion entre les termes.
// Swift 4
let storyboard = UIStoryboard(name: "StoryboardFileName", bundle: nil)
let controller = storyboard.instantiateViewController(withIdentifier: "StoryboardID")
self.present(controller, animated: true, completion: nil)
Notez que "StoryboardFileName"
est le nom de fichier du storyboard et non l'ID ici, où "StoryboardID"
est en réalité l'ID que vous avez. défini manuellement dans l'inspecteur d'identité. Parfois, les gens sont confus quant à la différence entre les deux, où ils croient que le premier est en réalité le StoryboardID et le second un nom de classe ViewController.
J'ai constaté une certaine confusion autour de cela, alors j'ai pensé à poster dans cette question qui attire de nombreux nouveaux programmeurs dans Swift avec un problème similaire.
Identité située dans l'onglet Inspecteur d'identité nommé Storyboard ID pour Xcode 6.3.2 et coché l'option Use Storyboard ID.
Je viens d'avoir ce problème après avoir ajouté un nouveau VC au storyboard, mais uniquement sur l'appareil, pas sur le simulateur. Il s'avère que cela était dû à plusieurs localisations de storyboard - le VC n'a été ajouté qu'à celui-ci. J'ai essayé de supprimer les autres localisations (l'une d'elles est celle utilisée par mon iPhone) mais j'avais toujours l'erreur. Finalement, j'ai dû recréer les autres localisations avec le nouveau VC dans chacune d'entre elles.
Pour ceux qui ont le même problème que @Ravi Bhanushali, voici une solution Swift 4:
let storyboard = UIStoryboard(name: "Main", bundle: Bundle.main)
Je l'ai trouvé ... cliquez sur le contrôleur de vue dans le storyboard, cliquez sur la troisième icône en partant de la gauche sur les inspecteurs d'attributs vc - celui où vous définissez le nom de l'appel sur cet écran indiquant "identité" - le mien était caché, je devais le faire Cliquez sur l'identité du mot pour afficher le storyboardID - ajoutez l'identifiant à partir du code, c'est fait
Le compilateur affiche l'erreur suivante:
Terminating app due to uncaught exception 'NSInvalidArgumentException',
reason: 'Storyboard (<UIStoryboard: 0x7fedf2d5c9a0>) doesn't contain a
ViewController with identifier 'SBAddEmployeeVC''
Ici, l'objet du storyboard créé n'est pas le storyboard principal qui contient nos ViewControllers. Comme fichier de storyboard sur lequel nous travaillons est nommé Main.storyboard. Nous avons donc besoin d’une référence d’objet de Main.storyboard.
Utilisez le code suivant pour cela:
UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"Main" bundle:[NSBundle mainBundle]];
Ici storyboardWithName
est le nom du fichier de storyboard avec lequel nous travaillons et bundle
spécifie le paquet dans lequel se trouve notre storyboard (c'est-à-dire mainBundle
).
La modification de "Storyboard ID" dans l'inspecteur d'identité (la 3ème icône à gauche) devrait fonctionner.
Si ce n'est pas le cas et que vous êtes sûr qu'il n'y a pas de faute de frappe, essayez de nettoyer le projet ("Produit" -> "Nettoyer" ou simplement commande + décalage + K).
Quelques-uns de mes contrôleurs de vue manquaient l'attribut storyboardIdentifier .
Avant:
<viewController
id="pka-il-u5E"
customClass="YourViewControllerName"
customModule="ModuleName"
customModuleProvider="target"
sceneMemberID="viewController">
Après:
<viewController
storyboardIdentifier="YourViewControllerName" <----
id="pka-il-u5E"
customClass="YourViewControllerName"
customModule="ModuleName"
customModuleProvider="target"
sceneMemberID="viewController">
Nettoyer toutes les choses et fermer Xcode ne résout pas le problème pour moi.
Je devais supprimer le viewController et en créer un nouveau avec un nouvel identifiant.
il est très simple de sélectionner le contrôleur de vue respectif dans le story-board principal et de vérifier le storyboardID si son utilisation actuelle l’identifie dans l’identificateur de donner un nom et l’utiliser.
ici mon premier est le storyboardID laisser vc = self.storyboard? .instantiateViewController (withIdentifier: "firstone") en tant que! tabBarViewController
Utilisez votre identifiant (@ "drivingDetails") comme identifiant de storyboard.
Lors de la saisie de l'identifiant, vous n'avez pas sélectionné le bon contrôleur de vue, vérifiez une fois si c'est fait et répétez la procédure une fois de plus.
J'ai la même erreur et je pourrais résoudre ce problème en modifiant les modifications suivantes dans mon projet. J'ai mentionné le nom de ma classe dans le panneau de l'inspecteur, puis le problème est résolu. Goto-> right panel there Inspecteur d'identité Dans la section des classes personnalisées
classe: le nom de votre classe (ViewController)
Dans l'ID de storyboard de la section Identité: votre ID de storyboard (nom du viewController)
Après cela, cliquez sur l'option Utiliser l'ID du storyboard ci-dessous. Le problème est donc résolu. J'espère que cela vous aidera ....
J'ai essayé toutes les solutions ci-dessus et aucune n'a fonctionné.
Ce que j'ai fait était:
Et puis ça a marché. La chose choquante était que j'avais entré l'ID Storyboar dans le constructeur d'interface et qu'il avait été supprimé/supprimé après avoir rouvert Xcode.
J'espère que ça aide quelqu'un.