Superposer des vues et des objets
Rocou
Membre
Bonjour,
J'essaie de superposer des NSView et y ajouter des objets graphiques. Je n'ai pas compris comment, sous IB, sélectionner un objet de l'interface. A la souris, il semble impossible sinon très difficile d'atteindre les couches du dessous. Dans le menu TOOLS, il y a bien un 'select' mais il ne permet pas de faire défiler tous les objets
J'essaie de superposer des NSView et y ajouter des objets graphiques. Je n'ai pas compris comment, sous IB, sélectionner un objet de l'interface. A la souris, il semble impossible sinon très difficile d'atteindre les couches du dessous. Dans le menu TOOLS, il y a bien un 'select' mais il ne permet pas de faire défiler tous les objets
Connectez-vous ou Inscrivez-vous pour répondre.
Réponses
Ensuite, tu peux naviguer entre les vues avec les raccourcis appropriés que tu peux voir dans l'un des menus d'IB.
Et pour finir, pour ce que tu veux faire, la plupart des ajouts devraient se faire dans le code directement.
Si tu as une autre méthode, je suis preneur!
Il me semble que ces raccourcis sont faits pour naviguer au sein des objet graphiques. Mais j'ai fini par trouver: tout simplement avec la touche TAB.
Oui, je vais m'orienter dans cette direction. Merci.
Bah, les vues peuvent être des sous-vues d'une vue principale, mais des vues de même niveau devraient éviter de se superposer.
Ensuite, tu n'es pas obligé, c'est peut-être même mauvais pour les performances, d'utiliser une vue par bloc (un bloc représentant un événement iCal par exemple), il vaut mieux utiliser des objets capables de se dessiner eux-mêmes dans une seule vue, c'est le même principe que les NSCell...
Euh... Je vois mal comment ça pourrait être difficile de sélectionner à la souris des éléments non graphiques puisqu'ils ne se superposent pas et qu'ils sont dans une fenêtre bien rangées...
Alors oui forcément, les raccourcis dont je parle permettent de sélectionner les différents objets graphiques...
Non, tu n'y es pas, j'ai du mal m'exprimer. Les blocs, j'avais dans l'idée de les dessiner sur une vue (avec NSBezierPath). Cette vue (qui sera translucide) se superpose à une seconde vue dans laquelle je positionne une NSTableView (pour mon calendrier).
Si, justement, mes vues se superposent. Dés lors, il est impossible de sélectionner à la souris les objets graphiques (telle ma NSTableView) qui se trouvent dans la vue du dessous.
Si on reprend l'idée et ce que je proposais dans l'autre post, le principe est le suivant : une vue unique, dont le drawrect (1) dessine le "fond" (les lignes indiquant les heures et délimitant les colonnes de jours, par exemple) et (2) boucle sur tous tes objets "Tasks" (qui représentent, du point de vue modèle, tes tâches que tu veux justement représenter dans ta vue calendrier), pour dessiner chaque "Task" individuellement. Tu peux pour cette partie avoir une méthode drawTask, qui prend une "Task" en paramètre, et utilise ses propriétés (day, startTime, endTime, color, title, ...) pour la dessiner dans ta vue.
Et bien sûr quand tu cliques dans ta vue, ce qui va appeler le mouseDown, tu peux tester (en bouclant sur [taskList reverseEnumerator] pour tester de la vue de premier plan (dessiner en dernier) à la vue d'arrière plan, pour sélectionner la plus en avant en priorité) quelle CalendarTask est sous ton clic de souris un peu sur le même principe (je crois que j'ai aussi expliqué ça dans l'autre post).
Déjà , une NSTableView ne t'aidera en rien, si c'est juste pour afficher des lignes une vues personnalisées peut très bien le faire sans avoir besoin d'une NSTableView dont les avantages seraient largement éclipsés par les inconvénients, c'est comme une utilisé un bazooka pour tuer une mouche.
Ensuite, ces blocs, justement, t'as pas compris ce que je voulais dire, ça risque d'être plus coûteux d'utiliser une vue par bloc plutôt que de créer un petit objet tout simple capable de se dessiner lui-même et à qui la vue demande de se dessiner...
Pour la sélection des objets NON-graphique, la souris est amplement suffisante, pour la sélection des objets graphiques, les raccourcis dont j'ai parlé fonctionne...
AliGator, merci d'être entré dans les détails. J'avais compris où tu voulais en venir mais techniquement, beaucoup de choses me faisaient peur. Maintenant, je sais mieux vers quoi m'orienter.
Je suis bien conscient de gâcher des ressources en utilisant une NSTableView. Mais les colonnes redimensionnables et les entêtes c'était autant de moins à gérer à la main. Comme je le disais à AliGator, tout ce qui touche au graphisme me fait un peu peur.
Je n'ai jamais eu l'intention d'utiliser une vue par bloc. Par contre, effectivement je n'avais pas compris ton idée de créer un petit objet capable de se dessiner lui-même. Cela complète la piste d'Ali.
Pour ma part, rien à faire, je n'y arrive pas. Mais ça viendra