IKImageBrowserView charge toujours les mêmes images!
Guillaume C
Membre
Bonjour,
J'utilise dans mon application une IKImageBrowserView. Comme ca ne marche pas comme je veux , j'ai créé une application qui fait uniquement ce qui ne marche pas (projet xcode en fichier joint). Alors voici ce qui coince:
Je souhaite insérer dans la IKImageBrowserView uniquement 2 sortes d'images (la numéro 1 et la numero 2). J'ai un NSTextfield dans lequel je rentre le numéro de l'image (soit 1 ou 2, et si c'est autre chose, ça plante, mais c'est normal). Ensuite je clique sur le bouton: importer l'image. Ca marche bien, je vois mon image dans la view.
MAIS, le problème apparait quand je change le numéro pour une nouvelle importation. C'est toujours la même image qui est importée Exemple: j'importe plusieurs fois l'image 1, ensuite je rentre 2 dans le NSTextfield, et c'est toujours l'image 1 qui est importée....
Le NSTextfield prend bien les valeurs car si je ferme et relance l'application, et importe l'image 2 en premier, c'est toujours l'image 2 qui sera importée. Et j'ai vérifié ceci avec un NSLog, qui lui me retourne la bonne image, alors que c'est toujours la première image importée qui est importée...
Pire, avec un bouton qui efface tout, indépendamment de mon choix dans le NSTextfield, c'est toujours la première image importée qui est importée. Alors que j'ai retiré tous les objets de mon tableau d'image.
Je suis complètement perdu et je ne vois vraiment pas pourquoi la IKImageBrowserView semble garder en mémoire la première image importée. :why?:
Je dois faire un truc de faux, mais quoi?
J'utilise dans mon application une IKImageBrowserView. Comme ca ne marche pas comme je veux , j'ai créé une application qui fait uniquement ce qui ne marche pas (projet xcode en fichier joint). Alors voici ce qui coince:
Je souhaite insérer dans la IKImageBrowserView uniquement 2 sortes d'images (la numéro 1 et la numero 2). J'ai un NSTextfield dans lequel je rentre le numéro de l'image (soit 1 ou 2, et si c'est autre chose, ça plante, mais c'est normal). Ensuite je clique sur le bouton: importer l'image. Ca marche bien, je vois mon image dans la view.
MAIS, le problème apparait quand je change le numéro pour une nouvelle importation. C'est toujours la même image qui est importée Exemple: j'importe plusieurs fois l'image 1, ensuite je rentre 2 dans le NSTextfield, et c'est toujours l'image 1 qui est importée....
Le NSTextfield prend bien les valeurs car si je ferme et relance l'application, et importe l'image 2 en premier, c'est toujours l'image 2 qui sera importée. Et j'ai vérifié ceci avec un NSLog, qui lui me retourne la bonne image, alors que c'est toujours la première image importée qui est importée...
Pire, avec un bouton qui efface tout, indépendamment de mon choix dans le NSTextfield, c'est toujours la première image importée qui est importée. Alors que j'ai retiré tous les objets de mon tableau d'image.
Je suis complètement perdu et je ne vois vraiment pas pourquoi la IKImageBrowserView semble garder en mémoire la première image importée. :why?:
Je dois faire un truc de faux, mais quoi?
Connectez-vous ou Inscrivez-vous pour répondre.
Réponses
Pas le temps de regarder ton projet.. mais n'oublie pas d'implémenter ceci dans la classe "BrowserItem" ou je ne sais pas comment tu l'as nommée :
;
Moi j'ai fait en fonction du chemin. Comme ça si l'item est dupliqué, il ne met pas X fois les doublons en mémoire cache.
avec ceci dans l'interface:
C'est bizarre...
Normal qu'il affiche toujours la meme image!
Je t'ai changé ça en envoyant simplement le chemin de l'image comme imageID.
Au passage, le peu que j'ai vu y'a l'air d'y avoir pas mal de problème de mémoire.
Et elle est definie dans la classe PictItem par:
Il y a un truc qui coince quelque part...
OK. Merci. Effectivement, je ne suis pas malin (du tout) ... ::)
Je me suis posé la question, mais quand j'ai vu les fichiers du genre categories.pbxbtree, je me suis dit qu'il ne fallait mieux pas bidouiller la dedans, mais maintenant je sais
En fait, la raison pour laquelle j'ai mis le même imageID, c'est que les images que j'affiche ne sont pas des vrais fichiers mais juste des NSImage. Ces NSImages représentent des résultats de calculs. Quand je change les paramètres des calculs, je souhaite mettre à jour les graphes.
Par exemple, j'ai un graphe pour observer la variable A. J'effectue un calcul en mettant le parametre k = 0, et j'affiche le graphe avec imageID = @A. Ensuite, je refais le calcul avec le parametre k = 1, et je souhaite re-afficher le graphe avec imageID = @A. Entre-temps, j'avais enlevé tous les BrowserItem de mon array, mais apparemment, ce n'est pas suffisant. Quand je re-ajoute un objet avec le même imageID, la IKImageBrowserView ne semble pas prendre l'objet mis à jour, mais celui qui était affiché auparavant (bizarre, car je l'ai releasé).
Donc ma question est plutôt de savoir comment rafraichir une IKImageBrowserView quand des images sont mises à jour par un autre processus (même imageID, mais NSImage différent). Dans mon cas, je pourrais toujours écrire le imageID de telle sorte qu'il contienne tous les paramètres et leurs valeurs, mais cela va vite être infaisable. Est-ce que cela paraà®t possible autrement?
Et encore merci!
Il faut implémenter
- (NSUInteger)imageVersion;
et incrémenter la valeur de mon instance de IKImageBrowserItem à chaque nouveau calcul. Et ça semble marcher!
Oui, oui, j'avais regardé et merci bcp pour la correction du projet. Mais quand j'ai mis les corrections dans mon vrai programme, cela ne marchait toujours pas, parce que je devais en fait mettre à jour des images avec le même UID.