J'essaie de tester une application que je développe sur mon iPhone. Pour ce faire, j'ai changé la cible de Simulator à Device on Xcode. L'application est correctement téléchargée sur l'appareil et fonctionne. La vue principale est affichée mais si j'essaye d'ouvrir une vue secondaire, l'application plante.
Sur le journal de l'iPhone (j'ai installé l'utilitaire de configuration de l'iPhone pour voir la console [est le seul moyen de voir le journal de l'iPhone?]) Je peux voir cette erreur:
Could not load NIB in bundle
Mais, sur le simulateur, cela fonctionne bien. Qu'est-ce qui ne va pas? Des idées?
J'ai constaté que parfois l'appareil est sensible à la casse et le simulateur ne l'est pas.
Quel est le nom de fichier de votre xib?
ou
Essayez de désinstaller l'application du simulateur et de l'installer à nouveau - le simulateur peut avoir un ancien fichier restant d'une exécution précédente de l'application - avez-vous renommé/déplacé le xib pendant le développement?
J'ai eu le même problème et je l'ai résolu comme ceci:
J'ai eu un problème similaire et j'obtenais la même erreur. Il s'avère que j'utilisais le nom complet du fichier xib dans le panneau des attributs sous "NIB Name:"
N'utilisez pas "SomeViewController.xib", utilisez simplement "SomeViewController" sans l'extension ".xib".
J'ai eu le même problème lors de l'appel de initWithNibName:@"MyViewController"
Changer l'invocation en initWithNibName:NSStringFromClass([MyViewController class])
a bien fonctionné
Vous pouvez essayer ces choses:
Dans mon cas, le xib n'était tout simplement pas copié dans le paquet. Une fois que j'ai ajouté le xib à l'étape "Copier les ressources du bundle" pour la cible de l'application, tout s'est bien passé.
J'ai finalement réussi à résoudre ce problème avec ces deux étapes:
Je ne sais pas pourquoi cela fonctionne sur le simulateur :(
Pour moi, le problème était exactement ce que FreeAsInBeer a dit: la pointe manquait d'une manière ou d'une autre dans le bundle, alors qu'elle était là auparavant et fonctionnait correctement dans les versions précédentes de l'application.
Pour résoudre le problème, j'ai fait ce qui suit:
C'est exactement ce qui a fonctionné pour moi lorsque j'ai reçu ce message. Votre kilométrage peut varier, car les circonstances ne sont pas toujours les mêmes pour tout le monde, mais j'espère que cela aidera quelqu'un qui rencontre ce problème.
-Evan
Une erreur simple qui pourrait provoquer cette erreur est d'essayer d'initWithNibName sur un viewController importé lorsque vous utilisez un storyboard plutôt que des fichiers Nib individuels. Si tel est le cas, lancez simplement le contrôleur au lieu d'essayer d'initialiser avec un nib qui n'existe pas, ou initialisez ces champs avec nil.
Si Storyboard et pas de nib, remplacez initWithNibName: bundle: par simplement init OR initWithNibName: nil bundle: nil
J'ai eu le même message d'erreur. Mon problème, cependant, était que mes paramètres de langue sur mon téléphone étaient réglés sur "anglais" et la région sur "Royaume-Uni". Cependant, le fichier qui n'a pas pu être chargé a été placé dans le répertoire de.lproj. Le déplacement du fichier dans le répertoire racine l'a résolu.
J'ai rencontré le même problème. Dans mon cas, le nom de la plume était "MyViewController.xib" et je l'ai renommé en "MyView.xib". Cela a éliminé l'erreur.
Je déplaçais également un projet de XCode 3 vers 4.2. La modification du type de chemin n'a pas d'importance.
J'ai eu exactement le comportement que vous avez décrit: fonctionne sur le simulateur mais obtenez le "Impossible de charger NIB dans le paquet" lors de l'exécution sur l'appareil, et l'application reste bloquée sur l'image de lancement.
Dans mon cas, le problème concernait le fichier MainWindow.xib que Xcode créait automatiquement avec la localisation en anglais. Je supporte l'anglais et l'italien dans mon application et j'ai réalisé qu'il me manquait la version localisée de MainWindow.xib pour la langue italienne.
Comme je n'avais pas besoin de localiser ce fichier (c'est Xcode par défaut pour le créer localisé), j'ai résolu le problème en supprimant simplement la localisation anglaise, donc le même fichier est utilisé indépendamment de la localisation. Une autre façon de résoudre le problème serait d'ajouter la version localisée manquante, si vous en avez besoin.
L'application plantait sur l'appareil car mon appareil est configuré pour la langue italienne. Le simulateur a plutôt été défini sur l'anglais et c'est pourquoi l'application fonctionne correctement. Juste pour vérifier, j'ai réglé le simulateur en langue italienne et l'application s'est plantée, confirmant le problème de localisation.
Je l'ai pour exécuter avec supprimer toute la localisation du xib dans la fenêtre de droite. Peut-être que le fichier se trouve dans le dossier de localisation.
J'ai également eu ce problème lorsque j'ai chargé un contrôleur de vue enfant à partir d'initWithCoder, qui est un bon endroit pour initialiser, mais gardez à l'esprit que vous devez l'ajouter en tant qu'enfant réel APRÈS le chargement de la vue.
Alors changez quelque chose comme ça:
[self addChildViewController: self.pageViewController];
[self.view addSubview: self.pageViewController.view];
[self.pageViewController didMoveToParentViewController:self];
... hors de votre méthode init et dans viewDidLoad. Ne pas dire que c'est votre problème en particulier, mais cela peut être utile à d'autres.
Pour ce que cela vaut, j'ai reçu cette erreur lorsqu'un de mes boutons de la barre d'onglets avait la mauvaise classe qui lui était assignée.
J'ai le même problème. Et ma solution consiste à supprimer toutes les localisations de la vue.