J'obtiens l'erreur suivante:
Storyboard (<UIStoryboard: 0x7ebdd20>) doesn't contain a view controller with identifier 'drivingDetails'
Voici 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à mis le identifier
sur le UIStoryboard
mais j'obtiens toujours cette erreur.
ios
objective-c
xcode
storyboard
Tapis
la source
la source
Réponses:
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 pu trouver le champ «Identifiant» dans l'inspecteur. Au lieu de cela, définissez simplement le champ nommé "ID du Storyboard" sur ce que vous nommeriez l'identifiant. Ce champ se trouve sous l'onglet "Afficher l'inspecteur d'identité" de l'inspecteur.
[Remarque - les commentaires ci-dessous indiquent que certaines personnes ont trouvé qu'elles devaient (également?) Définir le champ "ID de restauration" juste en dessous de l'ID du storyboard dans l'inspecteur. Cliquer sur "Utiliser l'identifiant du storyboard" ne semble pas suffisant.]
Il y a une image ci-dessous pour référence: (dans cet exemple, j'ai nommé mon identifiant de la même manière que ma classe)
la source
Dans Xcode 7-11 ,
lorsque vous modifiez les identifiants du storyboard et que vous obtenez des erreurs comme celle-ci,
NETTOYEZ simplement votre projet ( CMD+ SHIFT+ K)
la source
Fixé! Non seulement l'identifiant dans la séquence doit être défini, dans mon cas DrivingDetails, mais également l'identifiant dans ma tableViewController doit être défini comme DrivingDetails ... vérifiez mon image:
J'ai également supprimé le contrôleur de vue de navigation, donc maintenant les 2 contrôleurs de vue de table sont connectés directement avec une animation "push".
***** EDIT pour XCODE 7.0 *****
vous devez définir le storyboardId (dans ce cas, le viewController est intégré dans un contrôleur de navigation:
la source
[storyboard instantiateViewControllerWithIdentifier]
PAS les vues depuis Interface Builder à l'intérieur du contrôleur de vue; mais dans iOS6, il l'a faitRemarque:
"StoryboardFileName"
est le nom de fichier du storyboard et non l'ID du storyboard!"StoryboardID"
est l'ID que vous avez défini manuellement dans l'inspecteur d'identité pour ce storyboard (voir capture d'écran ci-dessous).Parfois, les gens croient que le premier est l'ID du Storyboard et le second le nom de la classe View Controller, alors notez la différence.
la source
.instantiateViewController(withIdentifier: "StoryboardID")
devrait être renommé en.instantiateStoryboard(withIdentifier: "StoryboardID")
Ou juste quelque chose de plus simpleUIStoryboard(name: "StoryboardFileName", bundle: nil).init()
Identité située dans l'onglet Inspecteur d'identité nommé ID de Storyboard pour Xcode 6.3.2 et cochée l'option Utiliser l'ID de Storyboard.
la source
J'ai juste eu 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 c'était dû à plusieurs localisations de storyboard - le VC n'a été ajouté qu'au principal. J'ai essayé de supprimer les autres localisations (dont l'une est celle que mon iPhone utilise) mais j'ai toujours l'erreur. En fin de compte, j'ai dû recréer les autres localisations avec le nouveau VC dans chacune d'elles.
la source
Le compilateur affiche l'erreur suivante:
Ici, l'objet du storyboard créé n'est pas le storyboard principal qui contient nos ViewControllers. Le fichier de storyboard sur lequel nous travaillons est nommé Main.storyboard . Nous devons donc avoir la référence de l'objet du Main.storyboard .
Utilisez le code suivant pour cela:
Voici
storyboardWithName
le nom du fichier de storyboard avecbundle
lequel nous travaillons et spécifie le bundle dans lequel se trouve notre storyboard (iemainBundle
).la source
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)
la source
Je l'ai trouvé ... cliquez sur le contrôleur de vue dans le storyboard, cliquez sur la troisième icône à partir de la gauche sur les inspecteurs d'attributs vc - celui où vous définissez le nom de l'appel sur ce scereen il dit `` identité '' - le mien était caché, je devais cliquez sur le mot identité, il affiche ensuite storyboardID - ajoutez l'identifiant du code, c'est fait
la source
La modification de "Storyboard ID" dans l'inspecteur d'identité (la troisième icône à gauche) devrait fonctionner.
Sinon et vous êtes sûr qu'il n'y a pas de faute de frappe, essayez de nettoyer le projet ("Produit" -> "Nettoyer", ou simplement commande + Maj + K).
la source
Lorsque vous entrez l'identifiant, vous n'avez pas sélectionné le contrôleur de vue approprié, vérifiez simplement une fois si vous avez terminé, répétez la procédure une fois de plus.
la source
Quelques-uns de mes contrôleurs de vue n'avaient pas l' attribut storyboardIdentifier .
Avant:
Après:
la source
J'ai eu 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. Allez dans le panneau de droite Inspecteur d'identité dans la section de classe personnalisée
class: votre nom de classe (ViewController)
Dans la section Identité ID de storyboard: votre ID de storyboard (viewController Name)
Après cela, cliquez sur l'option Utiliser l'ID du storyboard là-bas. Le problème est terminé. J'espère que cela vous aidera ...
la source
Utilisez votre identifiant (@ "drivingDetails") comme identifiant du storyboard.
la source
il est très simple de sélectionner le contrôleur de vue respectif dans le storyboard principal et de vérifier le storyboardID si son utilisation actuelle dans l'identidier de donner un nom et de l'utiliser.
ici mon premier est le storyboardID let vc = self.storyboard? .instantiateViewController (withIdentifier: "firstone") as! tabBarViewController
la source
J'ai essayé toutes les solutions ci-dessus et aucune n'a fonctionné.
Ce que j'ai fait était:
Et puis ça a marché. Ce qui est choquant, c'est que j'avais entré l'ID Storyboar dans le générateur d'interface et qu'il a été supprimé / supprimé après avoir ouvert à nouveau Xcode.
J'espère que cela aide quelqu'un.
la source
Nettoyer tout et fermer Xcode ne résout pas le problème pour moi.
J'ai dû supprimer le viewController et en créer un nouveau avec un nouvel identifiant.
la source
Remarque: si vous utilisez des cocoapodes dans votre projet, exécutez d'abord
pod deintegrate
etrm Podfile.lock
Ensuite, ouvrez votre dossier de projet dans n'importe quel éditeur de code tiers tel que VSCode et effectuez une recherche globale pour le nom ViewController générant l'erreur.
Tout devrait bien fonctionner maintenant.
Cela se produit le plus souvent lorsque vous renommez des fichiers à partir de Xcode.
la source
XCODE DRAG N DROP PANE EST GONE !!!
la source