web-dev-qa-db-fra.com

Impossible de charger l'image référencée à partir d'une nib de l'ensemble exécuté sur le périphérique

SplitView[1290:307] Could not load the "canary04.png" image referenced from a nib in the bundle with identifier "xx.co.mycompany.ipad.SplitView"

Je reçois uniquement l'erreur lors de l'exécution sur le périphérique. Il n'y a pas de problèmes d'exécution dans le simulateur.

J'utilise l'image directement dans le générateur d'interface avec un UIImageView.

EDIT: J'ai ajouté une nouvelle image différente à une pointe différente et cela fonctionne sans problèmes.

Quelqu'un a des idées?

63
TheLearner

Le système de fichiers sur les appareils iOS est sensible à la casse, donc c'est probablement un problème de cas. (Mac OS X est généralement sensible à la casse, vous n'avez donc pas vu ce problème dans le simulateur.)

En tant que tel, vérifiez que vous utilisez la même casse dans le code que le nom de fichier lui-même.

28
John Parker

Il pourrait ne pas être ajouté à votre cible et dans XCode 4 vous pouvez le faire comme ceci

  • Dans la vue de votre projet, cliquez sur le nom de votre projet.
  • Sélectionnez votre cible et sélectionnez l'onglet "Build Phases"
  • Faites glisser votre fichier image dans la section "Copier les ressources du paquet".

Cela a réglé le problème pour moi.

130
Peter Theill

Avez-vous l'image dans un dossier référencé dans XCode (dossier bleu)? Si c'est le cas, vous devez inclure le nom du dossier dans le chemin de l'image, par exemple "Images/canary04.png"

Le moyen facile

1 Il suffit de faire un grep dans la commande Shell pour trouver la chaîne de l'image référencée:

grep -R 'canary04.png' YourMainDirectoryFolder/*

2 Cela vous donnera (par exemple) une sortie comme celle-ci:

YourProject/en.lproj/YourViewController.xib: 

<textField borderStyle="roundedRect" background="canary04.png" id="19">

3 Vous savez maintenant quel fichier nib et de quel élément il s'agit. Il suffit d'aller dans le fichier et supprimer la référence.

14
Mick
  1. Supprimez le dossier bleu contenant l'image. 
  2. Importez à nouveau et sélectionnez "Copier les éléments si nécessaire". 
  3. Sélectionnez "Créer des groupes" PAS des dossiers
8
sbastidasr

Enregistrer l'image sous PNG-24. Ça marche pour moi

5
Mann

Vous pouvez le faire pour le vérifier depuis votre story-board ou votre plume. Ouvrez-le en tant que code source:

enter image description here

Ensuite, "trouvez" le nom de l'image qu'il contient, vérifiez s'il existe mais qu'il est déjà invalide dans votre projet, vous avez probablement supprimé ou modifié son nom et maintenant, il ne semble pas valide.

enter image description here

5
Tom

J'ai eu ce problème lorsque j'ai mis à niveau vers Xcode 4.4.1. J'ai constaté que, même si j'avais supprimé les images (et les boutons correspondants, etc.) dans les story-boards, il en était toujours fait mention dans mes fichiers de story-board (dans un champ tabBarItems). Je les ai commentés manuellement (), Produit -> Nettoyer, et je n’ai plus eu les erreurs. 

Je savais qu'il devait y avoir de fausses références dans le storyboard, car j'avais précédemment supprimé mon TabBar et que l'application actuelle fonctionnait sans problème, avec seulement des messages gênants dans la console.

4
Beau

Avez-vous inclus le fichier dans la cible? Cliquez avec le bouton droit sur votre cible dans Xcode, sélectionnez Obtenir des informations et choisissez le groupe "Cibles" en haut. Assurez-vous que votre cible est bien cochée.

Bonne chance.

EDIT: Le texte ci-dessus doit avoir été lu. Cliquez avec le bouton droit de la souris sur le fichier (canary04.png) dans Xcocde et sélectionnez Lire les informations ...

Désolé pour la faute de frappe.

4
MystikSpiral

J'ai eu le même problème. Essayez de 

  • nettoyer
  • construire et courir

ça a fonctionné avec moi

3
Ahmad

Solution 1:

Dans mon cas, j’avais copié un dossier contenant des images et même vérifié "Destination: copier les éléments si nécessaire". Cependant, il n'a pas été ajouté à "Copier les ressources du paquet" de "Phases de construction".

Vous pouvez ajouter des images comme suit:

  1. Sélectionnez Cibles 
  2. Sélectionnez l'onglet "Build Phases"
  3. Sélectionnez "Copier les ressources du paquet"
  4. Cliquez sur le bouton "+" (Plus) juste en dessous.
  5. Localiser les images et les ajouter

Screenshot for solution 1

Solution 2:

Supprimez des images en sélectionnant "Déplacer en mode". Encore une fois ajoutez des images dans votre projet avec la case "Destination: copier les éléments si nécessaire" cochée.

Note : Make sure that you add images in Assets.xcassets folder and not outside it.
3
Jayprakash Dubey

Dans mon cas, c'était parce que Photoshop n'enregistrait pas correctement mes fichiers. Dans la boîte de dialogue de sauvegarde de fichier, je cliquais sur myfile.png pour tenter de remplacer ce fichier. Le fichier était alors enregistré avec une extension png, mais au format photoshop.

Je devais m'assurer de changer le format de fichier en PNG avant de cliquer sur le fichier que je voulais écraser, enregistrant ainsi dans un fichier png, lisible par iOS. Fait intéressant, le constructeur d’interface a bien montré mes fichiers psd-as-png.

Plus généralement, assurez-vous que votre fichier est bien au format que vous croyez et qu'IOS est donc attendu.

3
Noah Dyer

J'avais aussi cette erreur. Je vais décrire mon scénario:

J'ai un sous-répertoire "img" qui contient des png.
L'un de ces png est "ic_timeprogress_000.png"

Dans le storyboard (concepteur visuel), j'avais une imageView et l'image était définie sur "ic_timeprogress_000.png" (pas par programme). Le concepteur a montré l'imageView correctement:

imageView in subdirectory

Bien que lors de l'exécution de l'application, l'erreur a été renvoyée.

Donc, dans le storyboard, j'ai changé (j'insiste: pas par programmation) de "ic_timeprogress_000.png" en "img/ic_timeprogress_000.png", ce qui a pour conséquence de ne pas afficher correctement l'image dans le concepteur mais de l'exécuter correctement (aucune erreur)

imageView in subdirectory

Bien que je modifie imageView.image par programmation, cette "image initiale" n'est jamais utilisée.

2
sports

J'avais un problème différent sous iOS 8. Dans mon cas, le problème était que j'avais sélectionné Spécifique au périphérique pour le jeu d'images, puis iPad. Le fait de revenir à Universal a résolu le problème.

Ce paramètre se trouve dans le fichier images.xcassets. Dans la troisième colonne, l'inspecteur d'attributs du jeu d'images.

Dans ce cas, les images ne seront pas affichées dans le storyboard ou le fichier NIB, même si vous les avez ajoutées à images.xcassets. Ils ne s'afficheront pas non plus dans le simulateur ou l'appareil.

1
Reefwing

Mon problème était que j'ai enregistré l'image au format .jpg et que j'ai changé le nom en .png (toujours au format jpg). Cela a fonctionné avec le simulateur 

1
app developer 27

Vérifiez que canary04.png existe dans votre projet et qu'il n'a pas été supprimé.

1
WrightsCS

Vérifiez votre nom d'image. Si il contient des espaces, l'image s'affichera lors de l'exécution dans le simulateur mais pas dans l'appareil. Pendant l’exécution vérifie le nom sensible à la casse, etc.

1
Arun

J'ai rencontré ce problème lorsque j'essayais de définir l'image d'un fichier imageView sur Interface Builder (.xib).

(J'utilisais des ressources d'image) 

J'ai eu 2 images avec theImage.jpeg et [email protected] Interface Builder pourrait pouvoir afficher des images vraies au moment de la compilation avec ces formats jpg / jpeg. Mais j'ai cette erreur dans le runtime:

Could not load the "theImage" image referenced from a nib in the bundle with identifier "org.etc.etc"

Ensuite, j'ai changé le format de mes fichiers image en .png et cela a fonctionné!

Essayez également cette solution si vous essayez de définir des formats d’images différents.

1
ersentekin

J'ai également rencontré le problème suivant: les fichiers jpeg ne peuvent pas être chargés correctement, mais je les ai résolus sans les modifier au format png: par exemple, si vous avez une image nommée "bg.jpg" , n'utilisez pas " bg "dans le storyboard (ce nom est répertorié dans la liste de sélection déroulante), vous devez plutôt explicitement écrire" bg.jpg "dans le champ du nom.

Pour la visualisation d'images basée sur la programmation, je suppose que l'utilisation d'une extension .jpg telle que [UIImage imageNamed:@"xx.jpg"] devrait également fonctionner (je n'ai pas testé). 

1
Yingpei Zeng

Dans mon cas, toutes les images étaient correctement affichées sur des appareils avec> iOS 7, mais pas avec iOS 6.1 . La solution était qu'iOS7 était sensible à la casse, mais iOS 6.1 n'était pas pour moi. J'avais des images nommées "myImageName" et "myimagename" qui conduisent mon ancien iPhone 3 à ne plus pouvoir afficher ces images.
Donc, les renommer les résolut.

0
Yedy

Essayé chaque réponse ici et rien, alors voici un autre petit problème, le nom de votre icône ne peut pas avoir de points (.) Car s'il le fait (et Xcode vous permet de le faire!) Tant que les icônes apparaissent bien dans le storyboard, elles ne se chargeront soit dans le simulateur ou le périphérique.

0
Pedro Borges

Vérifiez le nom de l'image. Ensuite, vérifiez si vous pouvez ouvrir l'image elle-même dans Paint ou Photoshop. Si l'image a été créée dans photoshop et qu'il y avait des couches, il y a parfois un conflit avec le.

0
Matt

Pour une raison quelconque, l'ajout de l'extension de fichier à la fin du titre de l'image est ce qui me l'a résolu. 

il faisait référence à "canary04" bc c'est ce que j'ai intitulé l'image, mais une fois que j'ai changé le titre de l'image en titre de l'image elle-même (canary04.png), elle a été résolue. 

0
Felecia Genet

J'ai eu le même problème, si vos images sont à l'intérieur de sous-dossiers, vous devez choisir l'option "Créer des groupes pour les sous-dossiers" lorsque vous copiez les ressources.

0
Veeru

J'ai ce problème avec Xcode 5, et il semble que "Combine illustration haute résolution" est le coupable. J'ai ouvert l'ensemble d'applications et toutes les images étaient en * .tiff, ce qui a provoqué le "blocage de l'image":

R&EACUTE;PARER:

Ouvrez les paramètres du projet et recherchez en haut "combiner". Modifiez ce paramètre sur NO.

enter image description here

Pour une raison quelconque, cette solution essentielle manque à tout le monde.

0
Mazyod

Mon problème était rien de ce qui précède. J'ai mis le iconFolder dans le dossier du projet Xcode.

Lorsque je l'ai importé, sélectionnez "Copier les éléments si nécessaire" et "Créer des groupes".

Cela a fonctionné pour moi.

0
A.G

Essayez de nettoyer le projet et assurez-vous que l'info.plist correspond à la xx.co.mycompany.ipad.SplitView

0
Max

J'ai eu ce problème lorsque j'ai accidentellement ajouté un autre jeu d'images au fichier du catalogue d'actifs. Je l'ai renommé après avoir réalisé l'erreur, mais cela ne semble pas fonctionner.

Supprimer le fichier et l'ajouter à nouveau résout le problème.

0
Enrico Susatyo

pour moi, ce qui a fonctionné, c’est de s’assurer que le propriétaire du fichier dans le constructeur d’interface dispose d’une sortie "vue".

Dans IB, sélectionnez le propriétaire du fichier dans "Placeholders", puis dans "Inspecteur des connexions", assurez-vous que la sortie de visualisation est connectée à la vue principale du fichier XIB actuel.

Cela est dû au fait que j'ai supprimé la vue principale à un moment donné et que j'ai oublié de reconnecter ma nouvelle vue.

J'espère que ça aide quelqu'un d'autre.

0
carlos16196

j'ai également rencontré le même problème car j'ai édité une image dans Photoshop et enregistré au format psd, assurez-vous d'enregistrer vos images sous Photoshop au format jpg ou png.

0
Mehul D

2015 - Toujours avoir ce problème. Je faisais référence à une image qui n'existait plus dans l'un des boutons à onglets. 

Solution: Il suffit d’inspecter tous vos boutons, UIImage, etc. et de vous assurer que l’image que vous référencez existe bien dans votre projet. 

0
Ronaldoh1

Dans mon cas, le problème était le format d'image. C'étaient des fichiers "jpg", alors que Xcode attendait des fichiers "png". Changer le format de fichier a résolu le problème.

0
NRR

Le format JPEG donne cette erreur en mode de publication sous iOS. Cela peut arriver alors que XCode optimise le code pour la publication. Essayez de remplacer l'image par JPEG et cela résoudra le problème. 

0
gunjot singh

Peut-être qu'après avoir défini l'image du bouton, vous modifiez le nom de l'image.

0
backslash112