Gestion des images ressources

muqaddarmuqaddar Administrateur
22:25 modifié dans Xcode et Developer Tools #1
Salut,

Je ne comprends pas bien comment le couple IB/Xcode gère les images dans les bundles.

Sur le HD, je fais un dossier Images dans mon projet, avec des sous-dossiers, pour classer mes images. Je je glisse dans Xcode ds les ressources (option "create foler references for added folders"), le dossier apparaà®t en bleu. Avec les sous-dossiers conservés, il est impossible d'en effacer (dossiers ou images) ni d'en rajouter.

A ce stade, ces images apparaissent quand je vais les chercher par le code ds mon prog.
Dans IB, si je veux ajouter une de ces images ds mon interface, elles ne sont pas dans l'onglet Images du NIB. Je dois les ré-ajouter à  la main par glisser déposer depuis mon dossier sur le HD. Là , je peux ensuite les placer ds mon interface. Et il m'est impossible de les supprimer depuis IB.
Elles sont mises ds Xcode, ds le dossier Ressources. Et là  je peux les supprimer. Sauf, qu'elles sont en double (ds xcode) avec le premier dossier que j'ai fait tout à  l'heure ! Bref, tout ça est étrange et bien compliqué.
Pourquoi les imags ajoutées d'un côté n'apparaitraient pas de l'autre ?

Réponses

  • WIMPWIMP Membre
    22:25 modifié #2
    Si tu veux que tes images apparaissent dans l'onglet images du NIB il faut cocher la checkbox de chaque image dans la liste des ressources du projet.
  • muqaddarmuqaddar Administrateur
    22:25 modifié #3
    Je ne vois pas cette checkbox !
    P-e a-t-elle disparu avec Xcode ?
  • BruBru Membre
    22:25 modifié #4
    Je vais te raconter une petite histoire : celle d'une image dans IB/Xcode.

    Les images utilisables dans IB (notamment pour les utiliser dans des NSImageView) sont des objets NSImage créés par IB à  partir d'un fichier que tu déposes dans le MainMenu.nib (onglet Image).

    Quand tu déposes une telle image, IB copie automatiquement ladite image dans la section Resources du bundle de l'appli, et ensuite instancie une NSImage via la méthode +[NSImage imageNamed:] en utilisant le nom de l'image déposée.

    Or la méthode imageNamed: ne sait chercher des fichiers image par leur nom que dans la partie Resources du bundle (ressource générale et ressources localisées).

    Tu ne peux donc pas utiliser IB et des images hors de Resources. Par contre, rien ne t'empêches de le faire par programme (via IBOutlets dans un awakeFromNib par exemple, ou via les tags et une table d'association chemin-de-fichier <-> NSImage toujours dans le awakeFromNib).

    .
  • muqaddarmuqaddar Administrateur
    22:25 modifié #5
    En fait, je ne comprends pas la différence entre les 2 choix quand on ajoute des dossiers d'images au projet ds xcode. Il y a 2 options avec les references.

    Une qui te transforme tes dossiers en bleu, et l'autre en jaune... c'est cela qui m'intrigue aussi.
  • muqaddarmuqaddar Administrateur
    22:25 modifié #6
    Et ce qui m'intrigue encore, c'est que quand j'échange le projet, les images n'apparaissent plus! Même en les rechargeant. Et elles sont bien dans Ressources !
  • Eddy58Eddy58 Membre
    22:25 modifié #7
    Les dossiers jaunes sont les dossiers par défaut, mais les dossiers bleu j'en ai jamais vus, à  part ceux appelés "Smart Group". Je vois qu'à  l'origine, tu n'as pas créé ton dossier de sous-groupe directement dans XCode. en faites, le mieux je pense pour ne pas se mélanger les pinceaux (surtout ceux d'XCode ;)), est de tout faire à  partir de ses menus. File->NewGroup,Group et Project->Add To Project. Comme ça les choses sont claires...:)
  • muqaddarmuqaddar Administrateur
    22:25 modifié #8
    Ok, je vais réessayer la prochaine fois en créant les groupes directement dans Xcode.
    Merci Eddy.
Connectez-vous ou Inscrivez-vous pour répondre.