Image View qui fait planter mon appli
sisopetron
Membre
Bonjour à tous,
Voilà , mon premier post sur ce forum et je suis un peu honteux de demander votre aide pour un problème ridicule. Donc pardonnez-moi pour mon ignorance, je débute en cocoa.
Mon appli est formée d'une fenêtre dans laquelle il n'y a encore rien (je vous disais que je suis super débutant). Je veux y mettre une image juste pour la décoration. Donc, dans IB, je glisse une Image View sur la fenêtre de mon appli et j'y dépose ensuite mon image. Je compile et ça plante. Déjà !
Ma question est donc toute bête : comment met-on une image sur le fond de la fenêtre d'une application ? Qu'est-ce que j'ai déjà fait de travers à ce stade "avancé" de la conception de mon appli ?
Merci pour votre aide.
tata !
Voilà , mon premier post sur ce forum et je suis un peu honteux de demander votre aide pour un problème ridicule. Donc pardonnez-moi pour mon ignorance, je débute en cocoa.
Mon appli est formée d'une fenêtre dans laquelle il n'y a encore rien (je vous disais que je suis super débutant). Je veux y mettre une image juste pour la décoration. Donc, dans IB, je glisse une Image View sur la fenêtre de mon appli et j'y dépose ensuite mon image. Je compile et ça plante. Déjà !
Ma question est donc toute bête : comment met-on une image sur le fond de la fenêtre d'une application ? Qu'est-ce que j'ai déjà fait de travers à ce stade "avancé" de la conception de mon appli ?
Merci pour votre aide.
tata !
Connectez-vous ou Inscrivez-vous pour répondre.
Réponses
Quand tu dis que ça plante, qu'est-il indiqué dans le débuguer et la console de ce dernier ? Parce que sans ce genre de détail on va avoir du mal à cerner le problème !
Tu pourrais mettre l'erreur renvoyer par Xcode ça aiderais.
ps: Tu avais un vieux compte qui trainais on dirait, ça fait trois ans que tu es inscrit
En fait, voilà ce que dit le débugger :
L'image n'a manifestement pas d'importance : si je ne glisse aucune image sur mon image view, j'ai droit à la même erreur de compilation. Le simple fait de glisser une image view fait planter le truc.
- Quelle est ta version de Mac OS X ?
- Ton projet utilise t'il le SDK correspondant à ta version de OS X ?
Bha c'est assez simple à savoir!
Direct tu vas chercher IKImageView dans la doc et tu regardes le framework nécessaire.. Quartz
Disons que j'aurrais préféré un "je n'ai pas pu parce que..." plutôt que juste un "j'arrive pas".
J'imagine bien que ça c'est pas simple tout de faire remonter les bon message d'erreur, je veut juste dire qu'ils sont pas toujours super explicite pour mon cerveau.
Moi je suis sûr que t'aurais trouvé tout seul si t'avais vraiment fait face au problème. Surtout quand on voit que ça plante avant meme que le nib soit complètement chargé.
A titre indicatif, j'ai Mac OS 10.5.7 à jour et j'ai téléchargé le dernier xcode (celui avec le sdk de iPhone 3.1) il y a quelques jours.
Quand on crée une appli, il n'est pas censé charger tout ce qu'il faut ? Ce truc, Quartz.framework, ne devrait pas être importé d'emblée dans mon nib ?
Et comment je fais pour régler mon problème, moi ? Si possible expliquez-moi ça clairement : je rappelle que je suis super, super-débutant.
Merci à vous.
1- Tu vas chercher dans "/System/Library/Frameworks/" le fichier "Quartz.framework".
2- Une fois trouvé, tu prends le fichier et tu le glisses dans ton projet, à la partie "Frameworks" (voir l'image - c'est ds la sidebar, à gauche de ton projet)
3- Tu as forcément une classe qui gère ton Nib. un "AppController" par exemple. Tu ouvres "TaClasse.h" et juste avant "@interface TaClasse" tu rajoutes :
Tu compiles et execute et hop ça marche
(J'ai rajouté un projet d'exemple)
Dans ton projet Xcode, dans l'arbre à gauche tu déroule Target puis clic droit / get info sur ton application et en bas tu rajoute dans les Linked Libraries le framework Quartz.
Edit: Il y a plusieurs méthode d'ajout de framework, ça reviens au même ^^
Moi perso je fait autrement, je fait un clic droit sur le dossier frameworks
add > existing framework...
Et puis là tu cherches ya Quartz.framework dans le coin.
ps: C'est vrai que ça serait pas mal si IB l'ajoutais tout seul.
[edit] Si après ces trois explication tu n'y arrives pas
Parce que sinon, est-ce bien utile d'utiliser une IKImageView (et donc le framework ImageKit) plutôt qu'une bête NSImageView ? Une NSImageView (supportée de base car dans le AppKit.framework qui lui est inclus de base) n'est-elle pas suffisante ?
Le problème c'est que je n'ai pas choisi : j'ai juste choisi l'image view dans les objets proposés par IB et posé le composant sur ma fiche. C'est IB qui choisi IKImageView au lieu de NSImageView. D'ailleurs, comment cela se fait-il ? J'aimerais savoir ce que j'ai fait de travers.
Par contre si tu choisis le "Image Well" au dessus au lieu de "Image View", tu vois qu'en réalité ce qui est appellé "Image Well" dans la palette Library n'est rien d'autre qu'une NSImageView (sans doute un peu personnalisée, tu peux la re-rendre un peu plus standard en modifiant ses propriétés depuis l'inspecteur, par exemple en enlevant la bordure (choisir "None" dans le menu déroulant "Border" de l'Attributes Inspector).
C'est vrai que j'avais jamais fait gaffe (ça fait un bail que j'ai pas programmé pour OSX maintenant que je me suis mis à l'iPhone) mais c'est pas super intuitif... enfin bon.
Merci à vous tous et bonne soirée.
Vraiment étrange...
Ali tu me déçois, arrête l'iPhone et remets-toi au Mac
J'ai dit que si on cherche "Image" dans la palette Library, ce que l'on trouve est indiqué par les titres "Image Well" et "Image View", entre autres. Or le premier si on sais pas à quoi ça correspond, on s'attend à ce que ce soit un objet d'une hypothétique classe "NSImageWell" ou un truc comme ça... et surtout on vois en dessous un objet appellé "Image View" donc on pense que c'est ce que tout le monde appelle "une ImageView", et donc une NSImageView, alors que c'est une IKImageView, objet venant du framework ImageKit.
J'ai aussi dit qu'en réalité l'ImageView était bien accessible par la palette Library, puisqu'il s'agissait de ce qui apparaà®t sous le label "Image Well"... et donc qu'il pouvait placer ce qui est indiqué comme un "ImageWell" dans IB et le customiser puisqu'en fait c'était bien un NSImageView.
C'est juste pas naturel tel que ça apparaà®t dans la palette IB, mais c'est bien présent qd mm
(nan mais ! )
Greensource on va le frapper :adios!:
:-*
Et nan mais sérieusement chez moi j'ai pas tout ça! Ok j'ai bien aussi le ImageWell qui est un NSImageView, mais pas une NSImageView tout simple comme la UIImageView de l'iPhone.
[edit] je rectifie, j'ai bien le même screenshot mais dedans le seul NSImageView c'est le ImageWell! Et donc si je suis un débutant et que je veux un NSImageView tout simple, bas c'est pas pratique!
En tout cas le plus simple pour éviter de se tromper est tout simplement de bien sélectionner la section Cocoa dans la lib de IB, au moins pas de soucis :-p
Quand tu cherches "Image" tu n'as que "Image View" et et "Image Well", la "Image View" est en fait une IKImageView, et la "Image Well" est la seule NSImageView.
(attention, il n'y aura plus de rediffusion de ce programme sur vos chaà®nes, c'était la dernière :P)