web-dev-qa-db-fra.com

Impossible de charger la pointe dans le groupe sur l'appareil iPhone

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?

25
Andrea Girardi

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?

22
deanWombourne

J'ai eu le même problème et je l'ai résolu comme ceci:

  1. Ouvrir la cible XCode
  2. Cliquez sur l'onglet "Phases de construction"
  3. Cliquez sur la section "Copier les ressources du bundle"
  4. Cliquez sur le +
  5. Ajouter le fichier Nib manquant
62
Iftach Orr

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".

18
markquezada

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é

10
yggdraa

Vous pouvez essayer ces choses:

  1. Assurez-vous que la casse est correcte
  2. Utilisez le nom de fichier xib sans l'extension ".xib"
  3. Supprimez tout - (tiret) ou autres caractères spéciaux, utilisez _ (trait de soulignement)
  4. Supprimez le fichier xib du projet et rajoutez-le au projet Xcode
  5. Vérifiez les paramètres de construction et assurez-vous que le déploiement est modifié pour currect SDK
9
darshansonde

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é.

5
FreeAsInBeer

J'ai finalement réussi à résoudre ce problème avec ces deux étapes:

  1. Dans l'inspecteur de fichiers du contrôleur de vue, supprimez toute localisation (juste pour le test)
  2. Assurez-vous d'avoir vérifié l'appartenance cible correcte

Je ne sais pas pourquoi cela fonctionne sur le simulateur :(

3
Alex

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:

  1. Sélectionnez le projet dans le navigateur de projet.
  2. Dans les paramètres du projet, sélectionnez Build Phases.
  3. Développez Copier les ressources du bundle.
  4. Faites défiler vers le bas (si nécessaire) et cliquez sur le bouton +.
  5. Dans la boîte de dialogue qui apparaît, cliquez sur le bouton Ajouter autre ....
  6. Recherchez le fichier .XIB manquant dans le système de fichiers.
  7. Build and Run ... la pointe manquante devrait apparaître lorsque vous l'exécutez.

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

3
Evan Stone

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

2
ColossalChris

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.

2
Burny

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.

2
vesselhead

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.

1
Gengis

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.

1
Michael

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.

1
PostCodeism

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.

1
bbeckford

J'ai le même problème. Et ma solution consiste à supprimer toutes les localisations de la vue.

1
JSanchez