在OS X的Dock上下文菜单中显示图标?

Mat*_*ler 6 macos cocoa objective-c

我的问题很简单:

要在码头上使用自定义菜单的应用程序图标,- (NSMenu*) applicationDockMenu: (id) sender;NSApplicationDelegate必须返回码头将显示菜单.

使用setImageNSMenuItem,你可以normaly图标添加到菜单.它们出现在普通菜单上,但不会出现在应用程序停靠栏图标的上下文菜单中.

那么Apple如何管理QuickTime,XCode,预览以在其停靠上下文菜单中可访问的最近打开的文件列表中显示图标?

谢谢.

Jon*_*pan 3

最近的文件列表实际上是标准 Dock 图标菜单的一部分。要在您的应用程序中使用它,您应该构建一个NSDocument基于 - 的应用程序。通过使用NSDocument,您将免费获得最近的文件菜单/行为。

如果你的应用程序不能基于NSDocument,你可以指示 Cocoa 根据 URL 维护最近的文档列表:

NSDocumentController *docController = [NSDocumentController sharedDocumentController];
[docController noteNewRecentDocumentURL:locationOfMyRecentFile1];
[docController noteNewRecentDocumentURL:locationOfMyRecentFile2];
[docController noteNewRecentDocumentURL:locationOfMyRecentFile3];
Run Code Online (Sandbox Code Playgroud)

请注意,目前-noteNewRecentDocumentURL:仅支持file://URL(您可以从带有 的路径创建+[NSURL fileURLWithPath:]。)将来,其行为可能会更改为允许使用其他方案的 URL。