我注意到在Mac上,Docker上的每个应用程序,当它没有打开并按住它时,会出现一个弹出菜单,里面有一个名为&#34的菜单项;显示最近的" ,当打开应用程序时,此项目将变为"显示所有窗口"。我现在想知道如何使它工作,当我在我自己的应用程序上单击它时,它没有任何显示。
我已经使用doc控制器进行了测试并使用了noteNewRecentDocumentURL:方法,但是,这两个"打开最近的"项目"文件"并且"显示最近的"在docker中,它没有显示我刚刚添加的网址。
答案 0 :(得分:2)
我不知道,在哪里点击应用程序以显示菜单。显示最近的文件清单
但是,如果显示,列表将由[NSDocumentController sharedDocumentController]
自动管理,该列表将添加到基于文档的应用程序的项目模板中。如果您没有基于文档的应用程序,则应重新检查,这是否是更好的选择。但您也可以在非基于文档的应用程序中使用[NSDocumentController sharedDocumentController]
:
在某些情况下,在非基于NSDocument的应用程序中继承NSDocumentController以获得它的一些功能是值得的。例如,Open Recent菜单的NSDocumentController管理在不使用NSDocument子类的应用程序中很有用。
在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;
}