Problème avec un NSOutlineView
olof
Membre
'soir !
Je suis en train de mettre en place un genre de liste "à la iTunes". A savoir une NSOutlineView (object graphique Source List) avec deux groupes et quelques items dans chaque groupe. J'ai deux classes qui me permettent de gérer le modèle de données pour ces informations (mais je ne pense pas qu'il est intéressant d'aller plus dans le détail).
Mon Outline View s'affiche très bien, avec mes données. Parfait. J'ai ajouté un petit bouton, qui ouvre une sheet qui permet à l'utilisateur d'ajouter un item dans un des deux groupes. J'ajoute un premier item, parfait, ça roule. Et quand je veux ajouter un deuxième item, le contenu de tout un de mes groupe disparait !
La première image montre, de gauche à droite, mon Outline View "de base", puis après ajout d'un premier item (Toto 1) et après ajout d'un deuxième item (Toto 2).
Ne sachant pas trop par où empoigner le problème, j'ai mis des log dans les différentes méthodes DataSource et Delegate de cet OutlineView. Et j'ai comparé ces logs après ajout de Toto 1 et après ajout de Toto 2. Comme on peut le voir sur la deuxième image, les méthodes appelées ne sont pas les mêmes !!!
Quelqu'un aurait une piste à me donner pour investiguer plus loin ? Je suis un peu perdu !
Merci !
Je suis en train de mettre en place un genre de liste "à la iTunes". A savoir une NSOutlineView (object graphique Source List) avec deux groupes et quelques items dans chaque groupe. J'ai deux classes qui me permettent de gérer le modèle de données pour ces informations (mais je ne pense pas qu'il est intéressant d'aller plus dans le détail).
Mon Outline View s'affiche très bien, avec mes données. Parfait. J'ai ajouté un petit bouton, qui ouvre une sheet qui permet à l'utilisateur d'ajouter un item dans un des deux groupes. J'ajoute un premier item, parfait, ça roule. Et quand je veux ajouter un deuxième item, le contenu de tout un de mes groupe disparait !
La première image montre, de gauche à droite, mon Outline View "de base", puis après ajout d'un premier item (Toto 1) et après ajout d'un deuxième item (Toto 2).
Ne sachant pas trop par où empoigner le problème, j'ai mis des log dans les différentes méthodes DataSource et Delegate de cet OutlineView. Et j'ai comparé ces logs après ajout de Toto 1 et après ajout de Toto 2. Comme on peut le voir sur la deuxième image, les méthodes appelées ne sont pas les mêmes !!!
Quelqu'un aurait une piste à me donner pour investiguer plus loin ? Je suis un peu perdu !
Merci !
Connectez-vous ou Inscrivez-vous pour répondre.
Réponses
J'ai fait une petite modification qui m'a fait avancé, mais juste un tout petit peu.
A la base, c'est après avoir ajouter l'item dans mon modèle que je fessait un "ReloadData" sur mon OutlineView. J'ai supprimer ce "ReloadData" et l'ai mis derrière un bouton. Résultat, la même chose. J'ajoute un item, je fais le "ReloadData" -> ok. J'ajouter un deuxième item, je fais un "ReloadData", mais liste est vide. Autre essai, j'ajoute un premier item, puis un deuxième et seulement après je fais un "ReloadData". Liste vide !
Après, j'ai ajouté la possibilité d'ouvrir et de fermer mes groupes "Recettes" et "Personnel" (avec la méthode delegate "isItemExpandable"). J'ajoute mes deux items, je ferme le groupe et je l'ouvre et là mes items s'affichent ! Y'a-t-il autre chose à faire qu'un simple "ReloadData" après avoir ajouter des items dans le modèle ?
Merci ![/font]
L'image jointe montre, à droite, avant le "ReloadData" et à gauche, après le "ReloadData" !!! Comme vous le voyez, les icônes ont changés !!! Est-ce que cette méthode doit être évitée ? Y'a-t-il un autre moyen de recharger la liste !?!?!?
Merci !
Merci !
J'ai eu plus de succès sur StackOverflow (http://stackoverflow.com/questions/14425936/strange-behavior-with-apple-sidebardemo). En gros, la démo d'Apple utilise le même objet pour chaque item de la SourceList, ce qui n'est pas très correct...
Ca explique le pourquoi du comment pour la démo d'Apple, mais pas pour mon problème (je créé un nouvel objet pour chaque item). Mon test suivant a été de passer par les bindings. Et là , ça fonctionne tout de suite mieux.
Je suis quand même assez étonné d'avoir été confronté à ces petits problèmes pour développer quelque chose qui me semble assez courant et pour lequel il existe un objet dans la librairie de IB !!!
Déjà , il n'y a pas de correspondance entre les noms dans l'éditeur de XIB et les propriétés des classes.
Ensuite, on ne comprend pas bien comment configurer chaque instance: pas mal d'options ont été ajoutées au fil des versions, mais les valeurs par défaut font ressembler ça à une appli de l'an 2001.
Heureusement, sous iOS, dans l'ensemble, la situation s'est beaucoup améliorée.