NSPopover Xcode 6.4
Bonjour, je suis nouveau ici et viens suite à un problème rencontré.
Je suis également tout nouveau dans le monde de l'Objective-C en auto-formation, et j'ai beaucoup de mal à instaurer un NSPopover dans un projet que je développe.
Quelqu'un pourrait-t-il entrer en contact avec moi dans le but d'une conférence Skype/TeamViewer afin de me montrer la démarche à suivre, ou alors, m'expliquer suite à cette question la méthode pas à pas pour créer ce NSPopover.
J'ai un .xib avec deux boutons d'Help, je voudrais que ces boutons affichent chacun un NSPopover différent avec un texte que j'aurais définit auparavant.
Je demande de la précision au maximum afin que je puisse comprendre le fonctionnement de cette fonctionnalité, et que je sache la réutiliser dans des cas différents à l'avenir.
Merci.
Réponses
https://developer.apple.com/library/mac/samplecode/Popover/Introduction/Intro.html ?
J'étais parti pour t'expliquer, mais ça ne sert à rien si tu ne connais pas les bases.
Commence par lire le livre d'Aaron Hillegass.
Utiliser un NSPopover est assez simple. Tu fixes sa propriété contentViewController, puis tu appelles
[popover showRelativeToRect:ofView:preferredEdge]. Mets son .behavior à NSPopoverBehaviorTransient si tu veux le laisser gérer sa fermeture.
Je vais m'intéresser à tout ça, merci.
Bonjour bonjour,
Après m'être repenché sur le sujet, j'ai fait quelques tests et une erreur me bloque un peu. J'ai vu des solutions qui pourraient éventuellement correspondre à mon problème, mais je n'arrive pas à les adapter.
Voici mon code :
Et voici le .h
Et enfin, l'erreur quand je clique sur le bouton d'help qui est censé faire pop le NSPopover :
Quelqu'un pourrait m'éclairer là dessus ?
Par contre, je vois une erreur: tu as déclaré une variable d'instance myPopover, or, la propriété va générer une variable appelée _myPopover par défaut.
Commence par retirer les déclarations des variables d'instances, ça ne se fait plus et ça ne sert à rien. Déclare uniquement des propriétés, même pour les outlets. Par ailleurs, je n'ai pas utilisé le mot clef @private depuis plus de dix ans. ça non plus, ça ne se fait plus.
(Recherche sur le web "Objective-C anonymous category").
Il y a une erreur dans cette ligne:
Ce n'est pas une instance de NSViewController que tu veux, mais de la sous-classe que tu as créé.
Disons que tu as créé une sous-classe de NSViewController appelée MyViewController (et pensé à cocher la case pour créer le .xib associé), tu aurais:
ou mieux:
Bonjour, j'ai réussit à implémenter le NSPopover sur un de mes boutons d'help.
J'ai fait de la sorte :
J'ai deux méthodes
Chacune de ces méthodes correspond à deux boutons d'help.
Ensuite, dans mon .xib, j'ai créé :
- Un Popover
- Une Custom View
- Un Label (pour la CV)
Puis,
Je link le bouton d'help avec la touche CTRL sur la méthode qui lui correspond dans le File's Owner
Je ink mon File's Owner avec le Popover
Je link le Popover View Controller à la Custom View
Et ce, deux fois de suite pour chacun de mes Popover.
La compilation fonctionne, et quand je lance le programme, j'ai effectivement un Popover sur mes boutons, mais c'est le même NSPopover qui apparait sur les deux boutons. Il semblerait que l'ajout du deuxième ait écrasé le premier.
Une solution ?
(Je ne sais plus si c'est NSMaxY, vérifie dans la doc).
Note qu'il est peu courant d'instancier un popover dans un xib, parce qu'habituellement la vue affichée dans le popover est gérée par une sous-classe de NSViewContoller qui a son propre .xib " histoire de ne pas avoir un seul gros .xib géré par un seul gros View Controller.
Ca fonctionne, merci beaucoup !
Je vais prendre en note ton conseil et essayer d'appliquer des modifications. Sujet résolu.