NSOutlineView avec plusieurs menus contextuels
yannS
Membre
Bonjour,
Je cherche à afficher un menu contextuel différent en fonction de l'élément d'un NSOutlineView sur lequel un clic droit est effectué.
J'utilise un NSTreeController dans lequel j'ai bien référencé children et leaf
Si leaf = false c'est un dossier, si leaf = true c'est "autre chose"
Si il s'agit d'un dossier je voudrais afficher un menu contextuel, si c'est "autre chose" afficher un autre menu contextuel
J'ai créé les 2 menus dans le Storyboard
Mais comme grand débutant je n'ai pas trouvé comme faire.
Merci par avance
Connectez-vous ou Inscrivez-vous pour répondre.
Réponses
J'ai un peu avancé.
J'ai compris qu'il fallait sous-classer NSOutlineView et surcharger menu(for:)
Ce que j'ai fait :
Actuellement aucun menu n'est affiché
Les menus sont dans le storyboard et les outlets dans le ViewController
Comment faire pour y accéder et les retourner depuis cette classe ?
J'ai trouvé une solution que voici, il y a peut-être mieux
ça semble pas terrible comme solution, car le viewController déclaré ne permet pas de "pointer" sur celui de l'application.
Pour forcer la sélection dans le NSTreeController, j'ai ajouté
Dans le viewController je passe le NSTreeController
Alors j'arrive dès que l'on fait un clic droit à sélectionner le node et à afficher le bon menu
Mais au autre défaut est apparu.
Les items de mes menus sont attachés à des actions qui sont dans le viewcontroller
Pou l'exemple : récupération de la sélection et affichage du text
Problème quand le code est exécuté il n'y a pas de sélection, il semble bien que le NSTreecontroller ne soit pas celui du viewcontroller de l'appli (je m'exprime certainement très mal)
Je dois certainement mal m'y prendre, si quelqu'un à une idée...
Une solution, j'ai simplement appliqué celle déjà utilisée pour le NSTreeController
coté viewcontroller