J'ai une application qui affiche une vue personnalisée dans la barre de menu de macOS. Lorsque l'utilisateur clique sur l'affichage personnalisé, je souhaite afficher un menu contextuel (NSMenu).Menu Bar Extra n'ouvrant pas sur le clic gauche
Mon code ressemble à ceci:.
privée laisser statusItem = NSStatusBar.system() statusItem (withLength: NSVariableStatusItemLength) timer private var: minuterie? private var Voir: MenuView! private var menu: NSMenu! privé let popover = NSPopover() privé var popoverController: PopoverViewController?
func applicationDidFinishLaunching(_ aNotification: Notification)
{
self.view = createView()
self.statusItem.view = self.view
self.menu = NSMenu()
self.menu.addItem(NSMenuItem(title: "Quit", action: nil, keyEquivalent: ""))
self.statusItem.menu = self.menu
self.statusItem.menu = menu
}
Cependant, lorsque je clique sur la vue, le menu n'apparaît pas comme j'attendre (bien, il ne figure pas du tout). Lorsque je n'utilise pas ma vue personnalisée et ne configure qu'une image, le menu contextuel s'ouvre lorsque je clique dessus. Comment puis-je afficher le menu lors de l'utilisation d'une vue personnalisée?
Cordialement, Sascha
Merci vous pour l'astuce, je me suis rendu avec une approche légèrement différente. J'ai toujours attribué le menu à l'élément d'état. Lorsque la vue a été cliquée, une notification est envoyée, puis traitée dans AppDelegate. Ici, la fonction popUpMenu est appelée. Je vous remercie. –
Il vous est déconseillé d'envoyer des notifications à 'Appdelegate' car l'instance est directement accessible de partout (' NSApp.delegate'). Utilisez les notifications uniquement s'il y a plusieurs récepteurs ou si les vues/contrôleurs ne sont pas liés entre eux. En outre, je recommande de garder la logique concernant la vue toujours ** dans ** la vue. – vadian
Ok, je vais le changer ensuite, merci encore. Je ne savais pas sur l'accès NSApp.delegate. –