【发布时间】:2020-04-24 00:07:34
【问题描述】:
我正在尝试在 Dock 中为我的 swift 应用程序创建一个自定义的 Dock 菜单,这样当用户在我的应用程序启动后右键单击 Dock 磁贴时,它会显示我的自定义项以及默认项停靠菜单项。我更喜欢以编程方式或使用 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) 发布的类似问题,但两者都提到了旧的 nib 界面,而不是如何使用情节提要创建一个。我还查看了故事板中的文件模板库,但找不到停靠菜单的模板(我只看到一个用于主菜单的模板)。
任何有关如何使用情节提要或以编程方式使用 swift 实现此目的的指针将不胜感激。
编辑 2020 年 4 月 24 日:由于肯的回应,我决定以编程方式自定义停靠菜单。这是我在 AppDelegate 中实现applicationDockMenu(_:) 的方法
EDIT #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
}
我一定错过了其他东西,因为在启动应用程序后我右键单击应用程序的停靠图标没有显示新项目。
有什么想法吗?
谢谢。
肯尼
【问题讨论】:
-
您能否确认您的
applicationDockMenu(_:)实现正在被调用?是否调用了同一类上的其他应用程序委托方法? -
我可以确认该方法从未被调用,因为我在方法顶部添加了打印语句。在 Xcode 中以调试模式运行应用程序并右键单击停靠图标,打印语句从未显示,断点也从未激活。我认为单击停靠图标时应该自动运行此方法?另一方面,
applicationDidFinishLaunching、applicationWillTerminate或application等其他应用程序委托方法正在按预期调用。 -
问题已解决。我忘记了方法调用中的 _ 参数。代码 sn-p 已更新。感谢您的帮助!
标签: swift xcode macos dock nsdocktile