J'ai lancé 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 lorsque j'essaye de construire sur mon iPhone, j'obtiens le message ' Impossible de trouver un storyboard nommé' MainStoryBoard 'dans le bundle NSBundle ".
Google n'a rien trouvé et cette question m'a suggéré de vérifier ma cible pour le storyboard, mais tout est en place. Même si quelque chose n'était pas en place, le simulateur ne fonctionnerait pas non plus.
Est-ce que quelqu'un peut-il me montrer la bonne direction?
Le simulateur n'est pas sensible à la casse, mais l'appareil l'est. Si votre storyboard s'appelle MainStoryboard, pas MainStoryBoard, cela causera votre problème.
Mon application fonctionnait normalement sur le simulateur iPhone, mais étrangement Xcode a cessé de répondre et j'ai dû forcer la fermeture de Xcode. Lorsque j'ai redémarré Xcode, j'ai rencontré "Impossible de trouver un storyboard nommé MainStoryboard ....",
J'ai résolu ce problème en suivant les étapes ci-dessous:
Pour une raison quelconque, le fichier "MainStoryboard.storyboard" n'a pas été reconnu après avoir forcé la fermeture de Xcode et les étapes ci-dessus ont permis à l'application de reconnaître à nouveau le fichier.
J'espère que cette solution vous aidera ..
Je veux juste mentionner le scénario que j'ai rencontré. Je ne sais pas comment, mais le storyboard s'est déconnecté de la cible bien qu'il fasse toujours partie du projet. Pour résoudre ce problème, j'ai ouvert le storyboard, sélectionné "Inspecteur de fichiers" (icône la plus à gauche sur le panneau de droite) et vérifiez le projet sous "Adhésion cible". J'espère que cela aide quelqu'un.
Le problème se produit lorsque vous désélectionnez "Utiliser l'internationalisation de base" et exécutez le simulateur dans des paramètres régionaux différents plutôt que votre localisation spécifique.
Par exemple, vous spécifiez une localisation zh-CN dans la configuration du projet mais exécutez le simulateur sous en-US.
J'ai essayé toutes les solutions mentionnées ci-dessus mais n'a pas fonctionné.
Après une recherche approfondie a trouvé le coupable:
La ressource de bundle de copie manquait dans TARGETS -> Phases de construction
Cela a été accidentellement supprimé lors de la suppression des Cocoapods.
Voici les étapes pour résoudre ce problème:
TARGETS
de votre projetplus (+) button
présent dans le coin supérieur gaucheStoryboard files (Main, Launchscreen etc).
Ajoutez également le dossier Assets. Vous pouvez ajouter ces fichiers en cliquant sur le bouton plus (+) présent en basderived data content
Delete the app
depuis Simulator/Device et relancezCela 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 l'adhésion cible correcte, les ressources de bundle de copie, le dossier de construction nettoyé, etc. (la plupart des réponses pointaient vers cela).
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.
Pour ce cas, cliquez sur le projet> Info
> Custom iOS Target Properties
et supprimez cette paire de valeurs clés: Main storyboard file base name
Si vous utilisez pour la navigation sur le code source, essayez d'utiliser le code ci-dessous
UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"Main" bundle: nil];
Souvent, les gens entrent "Main.storyboard" pour le nom, car c'est littéralement le nom du fichier, mais pour les besoins du codage Obj-C, "X.storyboard" a le nom "X", donc dans ce cas, @"Principale".
Nitin Alabur la réponse m'a aidé, mais indirectement. Publier une autre réponse pour clarifier:
Je crée un cadre dynamique avec un story-board à l'intérieur, et dans l'application de test que je construis pour tester le cadre, j'obtenais cette erreur.
Mon code ressemblait à ceci:
UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"MyStoryboard" bundle:nil];
J'ignorais les trucs de NSBundle
parce que, hé, je ne sais pas ce qu'est un paquet. Il s'avère que c'est important pour ce cas d'utilisation, où le storyboard existera en dehors du "bundle" de l'application (il est à la place dans le bundle de mon framework). Ce code dira à iOS de trouver le storyboard dans le bundle dans lequel la classe actuelle existe (qui est pour moi le bundle qui contient mon framework):
UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"MyStoryboard" bundle:[NSBundle bundleForClass:[self class]]];
J'ai également eu le même problème, ce qui a provoqué ce type d'exception est que j'avais écrit "Main.storyboard" au lieu de "Main". Nous n'avons pas besoin de spécifier l'extension .storyboard.
Un simple nettoyage a corrigé l'erreur pour moi.
Accédez à votre projet, sélectionnez votre cible et déroulez les menus pour resélectionner vos storyboards.
De plus, vous pouvez mettre à jour votre liste, j'ai trouvé que changer l'un ne changeait pas l'autre.
Il vous suffit de vérifier votre fichier de configuration (.plist
) en dessous de Supporting files
dossier
Vérifiez le nom de votre storyboard par défaut.
Ce problème s'est produit pour moi lorsque j'appelais le storyboard dans le code. La raison en était que j'utilisais un autre 'Word' pour le storyboard.
Allez dans Cibles -> info, sélectionnez info, copiez le nom du storyboard et collez-le à l'endroit où vous appelez storyboard.
Essayez au moins….
Cela m'est arrivé quand j'avais une application précédente avec le même nom installée sur le simulateur.
J'ai supprimé l'application précédente, resélectionné le Storyboard dans les "Informations de déploiement", relancé l'application et tout s'est bien passé.
J'ai eu ce problème lorsque j'ai accidentellement ouvert un projet avec une deuxième installation de Xcode. Il a cassé mes fichiers de projet de façon permanente (ce qui est compréhensible).
Pour éviter que cela ne se produise, j'ai dû changer ma façon de travailler avec les fichiers de storyboard. Après avoir édité le storyboard, enregistrez le fichier puis quittez XCode. Cela semble empêcher le problème de se produire.
Un très stupide mais j'avais "MainStoryboard.storyboard" dans l'entrée "Nom de la base de fichier du storyboard principal (iPad)" de mon mon .plist au lieu de simplement "MainStoryboard".
Il y a 2 possibilités,
Select Storyboard > Go to file inspector (first right tab) > Check Target Membership
Initialisez le storyboard avec le bon bundle
.
bundle = nil
Si le storyboard est dans une cible différente de celle sur laquelle vous travaillez, essayez de suivre le code pour initialiser le bundle et le storyboard.
let bundle = Bundle(for: MyClass.self)
let storyboard = UIStoryboard(name: "Main", bundle: bundle)
J'ai eu cette erreur sur l'appareil lorsque j'ai ajouté environ 150 polices à UIAppFonts
.
Après avoir réduit leur nombre à environ 100, il a disparu.
La solution pour moi était que j'avais juste besoin d'ajouter le MainStoryboard aux Bundle Resources . Après cela, cela fonctionne très bien.
Projet -> Build Phases -> Copy Bundle Resources -> cliquez sur le bouton + et ajoutez votre fichier.
Accédez à votre info.plist sur Build Phases> Copy Bundle Resources et ajoutez votre storyboard en utilisant l'icône "+"
J'ai eu ce problème dans un projet qui avait des storyboards avec et sans les suffixes ~ iPad ou ~ iPhone, comme MainStoryboard.storyboard et MainStoryboard ~ iPad.storyboard.
Le problème était que MainStoryboard.storyboard remplaçait MainStoryboard ~ iPad.storyboard quand il a été compilé dans le répertoire de construction. Si les fichiers étaient compilés dans l'ordre inverse, les deux seraient conservés sans problème. Je ne sais pas pourquoi cela se produit.
Pour contourner ce problème, vous pouvez cesser d'utiliser les suffixes ~ iPad/iPhone ou vous assurer que les fichiers sont dans le bon ordre lors de la phase de copie des ressources de l'ensemble.
(Utilisation de XCode6.2beta2)
Si vous avez récemment réinitialisé votre carte SIM iOS aux paramètres par défaut, il est également utile de vérifier les paramètres régionaux dans ses Préférences. Je travaille sur l'application avec le russe comme seul paramètre régional et après la réinitialisation de la carte SIM, le xCode s'est arrêté pour démarrer l'application car les paramètres régionaux de la carte SIM étaient définis sur l'anglais.
J'ai eu un problème similaire et j'obtenais l'erreur suivante.
exception 'NSInvalidArgumentException', raison: 'Impossible de trouver un storyboard nommé' MainStoryboard_iPhone 'dans le bundle NSBundle
Je l'ai corrigé en mettant à jour le fichier plist. Allez simplement dans Edition-> Rechercher-> Rechercher dans Workspace et recherchez "histoire". Mettez à jour le nom approprié pour le story-board.
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'identifiant de bundle du framework pour obtenir le bundle correct:
let storyboard = NSStoryboard(name: "StoryboardName",
bundle: Bundle(identifier: "com.company.FrameworkName"))