Je n'ai pas trouvé de storyboard nommé "MainStoryBoard" dans bundle NSBundle
j'ai démarré une nouvelle application il y a quelques jours et j'ai commencé à travailler avec le simulateur pour la tester. J'ai commencé comme un projet vide et j'ai ajouté manuellement le storyboard. Le simulateur construit et exécute mon application très bien, mais quand j'essaie de construire sur mon iPhone je reçois le message ' N'a pas pu trouver un storyboard nommé 'MainStoryBoard' dans bundle NSBundle ".
Google n'a rien trouvé et cette question suggéré que j'ai vérifié mon objectif pour le scénario, mais tout est en place. Même ainsi, si quelque chose n'était pas en place, le simulateur ne fonctionnerait pas non plus.
quelqu'un peut-il m'indiquer la bonne direction?
26 réponses
Le simulateur n'est pas sensible à la casse, mais le périphérique est. Si votre storyboard s'appelle MainStoryboard, et non MainStoryBoard, cela causera votre problème.
j'ai fait fonctionner mon application normalement sur le simulateur iPhone mais étrangement Xcode a cessé de répondre et j'ai dû forcer à quitter Xcode. Quand J'ai redémarré Xcode que j'ai rencontré "N'a pas pu trouver un storyboard nommé MainStoryboard....",
j'ai corrigé cette question en suivant les étapes ci-dessous:
- Rename" MainStoryboard.storyboard " à " MainStoryboard_1.storyboard "
- ouvrir le fichier " $your_app$ - Info.plist" qui se trouve dans "Prise en charge des Fichiers du dossier". Éditer " nom de base du fichier storyboard principal "en" MainStoryboard_1.storyboard."
- a relancé l'application, et ça a marché pour moi.
- j'ai renommé mon fichier storyboard de nouveau à son" MainStoryboard original.storyboard."
- Édité le .fichier plist de retour à son origine.
- a relancé l'application, et ça a marché pour moi.
Pour une raison quelconque, le fichier "MainStoryboard.storyboard" a été non reconnu après le départ de force Xcode et suivant les étapes ci-dessus a fait l'application reconnaître le fichier à nouveau.
Espérons que cette solution vous aide..
je veux juste mentionner le scénario que j'ai rencontré. Je ne sais pas comment, mais storyboard s'est déconnecté de la cible bien qu'il fasse toujours partie du projet. Pour corriger ce problème, j'ai ouvert storyboard, sélectionné "File Inspector"(icône à gauche sur le panneau de droite) et vérifié le projet sous "Target membership". Espérons que cela aide quelqu'un.
le problème se produit lorsque vous désélectionnez" Utiliser L'internationalisation de la Base " et que vous exécutez un simulateur dans des emplacements différents plutôt que dans votre localisation spécifique.
par exemple, vous spécifiez une Localisation zh-CN dans le cadre du projet, mais exécutez le simulateur sous en-US.
a essayé toutes les solutions mentionnées ci-dessus mais n'a pas fonctionné.
après des recherches approfondies a trouvé le coupable:
la ressource du paquet de copies était manquante dans les cibles - > phases de construction
cela a été enlevé accidentellement tout en enlevant des Cocoapods.
ci-dessous sont les étapes pour corriger ceci:
- passer à
TARGETS
de votre projet - cliquez sur
plus (+) button
présent dans le coin supérieur gauche - Sélectionnez Nouvelle Copie de Bundle de Ressources à partir de la liste déroulante
- Maintenant, ajoutez
Storyboard files (Main, Launchscreen etc).
ajoutez aussi le dossier des actifs. Vous pouvez ajouter ces fichiers en cliquant sur le bouton plus (+) présent en bas de la page
- supprimer le
derived data content
-
Delete the app
je pensais que vous aviez peut-être supprimé le storyboard et décidé d'utiliser un .fichier xib lors du lancement initial de l'application. Dans ce scénario, Xcode essaierait de trouver un storyboard inexistant.
dans ce cas, cliquez sur le projet > Info
> Custom iOS Target Properties
et supprimez cette paire de valeurs.:
Main storyboard file base name
cela m'a aidé (Swift 2.1, Xcode 7.2) pour une application avec une barre d'onglets
let storyboard: UIStoryboard = UIStoryboard(name:"Main",bundle: NSBundle(forClass: self.dynamicType))
let tabController = storyboard.instantiateViewControllerWithIdentifier("MyTabBarIdentifier") as! UITabBarController
j'avais le Main.storyboard avec la bonne composition cible, ressources de paquet de copie, dossier de construction nettoyé, etc (la plupart des réponses pointaient vers cela).
Nitin Alabur la réponse m'a aidé, mais indirectement. Poster une autre réponse pour clarifier:
je construis un cadre dynamique avec un storyboard à l'intérieur, et dans l'application d'essai que je construis pour tester le cadre, je recevais cette erreur.
mon code ressemblait à ceci:
UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"MyStoryboard" bundle:nil];
j'ignorais le truc du NSBundle
parce que, hé, Je ne sais pas ce qu'est un paquet. Avérer il est important pour ce cas d'utilisation, où le storyboard existera en dehors du "faisceau" de l'application (il est dans le faisceau de mon cadre à la place). Ce code va dire à iOS de trouver le storyboard dans le paquet dans lequel la classe courante existe (qui pour moi, est le paquet qui contient mon framework):
UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"MyStoryboard" bundle:[NSBundle bundleForClass:[self class]]];
allez à votre projet, sélectionnez votre cible et retirez des menus pour re-Sélectionner vos storyboards.
aussi, vous pouvez mettre à jour votre liste, j'ai trouvé que changer l'un n'a pas changé l'autre.
si vous utilisez pour la navigation sur le code source, essayez d'utiliser ci-dessous le code
UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"Main" bundle: nil];
souvent les gens entrent " Main.storyboard" pour le nom, puisque c'est littéralement le nom du fichier, mais pour les besoins de l'Obj-C de codage, "X.-le storyboard a le nom de "X", donc dans ce cas, @"Principal".
pour éviter cela, j'ai dû changer ma façon de travailler avec les fichiers de storyboards. Après avoir édité le storyboard, sauvegardez le fichier puis quittez XCode. Cela semble éviter le problème.
j'ai eu ce problème quand j'ai accidentellement ouvert un projet avec une deuxième installation de Xcode. Il a cassé mes dossiers de projet de façon permanente (ce qui est compréhensible).
ce problème est arrivé pour moi quand j'appelais storyboard en code.La raison était que j'ai utilisé un mot différent pour storyboard.Je l'ai résolu comme ceci
Aller Objectifs ->info , sélectionnez info,copier le nom de storyboard et de le coller à l'endroit où vous appelez storyboard.
donnez au moins un essai....
cela m'est arrivé lorsque j'ai fait installer sur le simulateur une application portant le même nom.
j'ai enlevé l'application précédente, re-sélectionné le Storyboard sur le" Deployment Info", relancer l'application, et tout a bien fonctionné.
vous avez juste besoin de vérifier votre fichier de configuration ( .plist
) sous Supporting files
dossier
vérifiez le nom de votre storyboard par défaut.
j'ai aussi eu le MÊME PROBLÈME, Ce qui a causé ce type d'exception est que j'avais écrit" Main.storyboard" au lieu de "main". Nous n'avons pas à le préciser .storyboard de l'extension.
j'ai eu le même problème et j'avais l'erreur suivante.
exception 'NSInvalidArgumentException', reason: 'Could not find a storyboard named 'MainStoryboard_iPhone' in bundle NSBundle
je l'ai corrigé en mettant à jour le fichier plist. Il vous suffit d'aller à Edit - > Find - >Find dans L'espace de travail et de rechercher "story". Maintenant, mettez à jour le nom approprié pour le tableau.
si vous avez récemment réinitialisé votre sim iOS aux paramètres par défaut, il est également utile de vérifier les paramètres locaux dans ses préférences. Je travaille sur l'application avec le russe comme la seule locale et après sim réinitialiser le xCode arrêté pour démarrer l'application parce que la sim locale a été réglée à l'anglais.
j'ai eu cette erreur sur l'appareil quand j'ai ajouté environ 150 polices UIAppFonts
.
Après que j'ai réduit leur compte à environ 100, il est parti.
j'ai eu ce problème dans un projet qui avait des storyboards avec et sans suffixes ~iPad ou ~iPhone, comme MainStoryboard.story board and MainStoryboard~iPad.storyboard.
le problème était ce tableau principal.le storyboard écrasait le MainStoryboard ~ iPad.storyboard quand il a été compilé dans le répertoire de compilation. Si les fichiers étaient compilés dans l'ordre inverse, les deux seraient conservés sans problème. Je n'ai aucune idée de pourquoi cela se produit.
à contournez cela, vous pouvez arrêter d'utiliser les suffixes ~iPad/iPhone ou vous assurer que les fichiers sont dans le bon ordre dans la phase de ressources de paquet de copie.
(Utilisant XCode6.2beta2)
un très stupide mais j'ai eu "MainStoryboard.storyboard" dans le Principal "storyboard nom de base du fichier (iPad)" entrée de mon de mon .plist au lieu de simplement "MainStoryboard".
la solution pour moi était, que j'avais juste besoin d'ajouter le MainStoryboard au Bundle Resources . Après cela, il fonctionne très bien.
Project - > Build Phases - > Copy Bundle Resources - > cliquez sur le bouton + et ajoutez votre fichier.
allez à vos infos.> Copiez les ressources du paquet et ajoutez votre storyboard en utilisant l'icône "+"
Dans mon cas, c'était un storyboard à l'intérieur d'un cadre pour une application Mac. J'utilisais:
let storyboard = NSStoryboard(name: "StoryboardName", bundle: nil)
et nécessaire d'utiliser l'Identificateur de bundle du framework pour obtenir le bundle correct:
let storyboard = NSStoryboard(name: "StoryboardName",
bundle: Bundle(identifier: "com.company.FrameworkName"))
il y a 2 possibilités,
- assurez-vous que votre Storyboard est ajouté à votre cible.
Select Storyboard > Go to file inspector (first right tab) > Check Target Membership
-
initialiser le storyboard avec le bon
bundle
.- si vous travaillez sur la même cible, utilisez
bundle = nil
-
si le storyboard est dans une cible différente de celle sur laquelle vous travaillez, alors essayez de suivre le code pour initialiser bundle et storyboard.
let bundle = Bundle(for: MyClass.self) let storyboard = UIStoryboard(name: "Main", bundle: bundle)
- si vous travaillez sur la même cible, utilisez