如何实施"显示最新" OS 10.9及更高版本上的项目

时间:2016-06-01 02:50:57

标签: macos

我注意到在Mac上,Docker上的每个应用程序,当它没有打开并按住它时,会出现一个弹出菜单,里面有一个名为&#34的菜单项;显示最近的" ,当打开应用程序时,此项目将变为"显示所有窗口"。我现在想知道如何使它工作,当我在我自己的应用程序上单击它时,它没有任何显示。

我已经使用doc控制器进行了测试并使用了noteNewRecentDocumentURL:方法,但是,这两个"打开最近的"项目"文件"并且"显示最近的"在docker中,它没有显示我刚刚添加的网址。

2 个答案:

答案 0 :(得分:2)

我不知道,在哪里点击应用程序以显示菜单。显示最近的文件清单

  • 在子菜单打开最近
  • 中的应用文件菜单中
  • 在应用程序的停靠菜单中作为列表,每个文档包含一个项目
  • 可能在与该应用相关的其他一些地方

但是,如果显示,列表将由[NSDocumentController sharedDocumentController]自动管理,该列表将添加到基于文档的应用程序的项目模板中。如果您没有基于文档的应用程序,则应重新检查,这是否是更好的选择。但您也可以在非基于文档的应用程序中使用[NSDocumentController sharedDocumentController]

  

在某些情况下,在非基于NSDocument的应用程序中继承NSDocumentController以获得它的一些功能是值得的。例如,Open Recent菜单的NSDocumentController管理在不使用NSDocument子类的应用程序中很有用。

Documentation

NSDocumentController的文档中有一节管理打开最近菜单,其中包含方法-noteNewRecentDocumentURL:的说明。您必须将此消息发送到共享实例, 每当您想要将项目添加到最近的文档列表时:

[[NSDocumentController sharedDocumentController] noteNewRecentDocumentURL:theURLOfTheDocYourAppOpens];

请注意:

  

不基于NSDocument的应用程序还必须在应用程序委托中实现应用程序:openFile:方法,以处理来自“打开最近”菜单命令的请求。

如果您不想使用文档控制器,则必须自己维护列表并手动将其添加到不同的位置。你可以开始here。我不推荐。

答案 1 :(得分:0)

这里是与Xamarin.Mac一起使用的代码。

// Add the file to the menu. Note creation of file url.
void AddFileToOpenRecentMenu(string filePath)
{
    var fileUrl = NSUrl.FromFilename(filePath);
    NSDocumentController.SharedDocumentController.NoteNewRecentDocumentURL(fileUrl);
}

// Open the file selected from the menu (in AppDelegate.cs)
[Export("application:openFile:")]
public override bool OpenFile(NSApplication sender, string filename)
{
    var keepFileInMenu = ProcessFile(filename);
    return keepFileInMenu;
}