如何使用 Xcode 在扩展坞中为 macOS 应用程序创建自定义扩展坞菜单

Ken*_*nny 5 macos xcode dock nsdocktile swift

我正在尝试在坞站中为我的 swift 应用程序创建一个自定义的坞站菜单,以便当用户在启动后右键单击我的应用程序的坞站磁贴时,除了默认的坞站菜单项之外,它还会显示我的自定义项。我更喜欢以编程方式执行此操作或使用 Xcode 创建(静态)菜单项。

我已经审查了此处发布的类似问题(How can I add a menu to the application in the Dock?)和(Adding Items to the Dock Menu from my View Controller in my Cocoa App),但两者都提到了旧的笔尖界面,而不是如何使用故事板创建一个。我还查看了故事板中的文件模板库,但找不到停靠菜单的模板(我只看到主菜单的一个模板)。

任何有关如何使用情节提要或以编程方式使用 swift 实现此目的的指示将不胜感激。

编辑 2020 年 4 月 24 日:自从 Ken 回复后,我决定以编程方式自定义停靠菜单。这是我applicationDockMenu(_:)在 AppDelegate 中实现的方法

编辑#2 4/24/2020:修复了_方法缺少的输入参数并解决了问题。

func applicationDockMenu(_ sender: NSApplication) -> NSMenu? {
        let myMenu = NSMenu(title: "MyMenu")
        let myMenuItem = NSMenuItem(title: "My Item 1", action: nil, keyEquivalent: "")
        myMenu.addItem(myMenuItem)
        return myMenu
    }
Run Code Online (Sandbox Code Playgroud)

我一定错过了其他东西,因为在应用程序启动后我右键单击应用程序的停靠图标时没有显示新项目。

任何想法?

谢谢。

肯尼

Ken*_*ses 3

您可以在应用程序委托类中实现该方法applicationDockMenu(_:),以返回要添加到 Dock 菜单的项目菜单。

如果您检查该方法的文档,它还讨论了提供静态 Dock 菜单的其他方法。其中之一涉及创建一个单独的 NIB。如果没有菜单 NIB 模板,您只需创建一个空模板并向其中添加一个菜单对象即可。该 NIB 由 Info.plist 文件中的键引用,不需要涉及故事板。