【问题标题】:adding menu items to the right click app menu in the dock casues them to be re-added each time i click将菜单项添加到扩展坞中的右键单击应用程序菜单会导致每次单击时重新添加它们
【发布时间】:2019-03-24 08:44:52
【问题描述】:

所以我一直在尝试将项目添加到右键菜单 当你在 macOS 中右键单击 Dock 中的应用程序图标时

但是当我使用此代码执行此操作时,每当我右键单击应用程序图标时 它重新添加了菜单项

 class myclass: NSObject , NSApplicationDelegate{


   func applicationDockMenu(_ sender: NSApplication) -> NSMenu? {


    dockMenu.addItem(withTitle: "test1", action: nil, keyEquivalent:     "")

    return dockMenu
   }

【问题讨论】:

  • 您的dockMenu 定义在哪里?
  • @AmirKhan 在 myclass 之外作为“let dockMenu = NSMenu()”
  • @vadian 如果我这样做,我无法从该功能之外获得菜单项
  • 在添加新项目之前尝试删除所有菜单项。

标签: swift macos cocoa


【解决方案1】:

您必须在方法中创建NSMenu 内部

func applicationDockMenu(_ sender: NSApplication) -> NSMenu? {

    let dockMenu = NSMenu()
    dockMenu.addItem(withTitle: "test1", action: nil, keyEquivalent:     "")
    return dockMenu
}

或删除项目

let dockMenu = NSMenu()

func applicationDockMenu(_ sender: NSApplication) -> NSMenu? {

    dockMenu.removeAllItems()
    dockMenu.addItem(withTitle: "test1", action: nil, keyEquivalent:     "")
    return dockMenu
}

但是我会在 Interface Builder 中声明它并使用插座。

【讨论】:

  • 如果我将 let var 放在该函数中,那么我无法从外部访问菜单项
  • @AmirKhan let 是正确的,因为 NSMenu 是引用类型
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-03-03
  • 1970-01-01
  • 2012-02-11
  • 2010-10-20
  • 1970-01-01
相关资源
最近更新 更多