关于可可:在”打开最近的”菜单中添加一个不指向文件的项目

Add to the “Open Recent” menu an item that doesn't point to a file

是否可以将不指向文件系统上存在的文件的项添加到"打开最近的文件"菜单?

在不基于NSDocument的应用程序中,我可以使用以下代码将一个项目添加到"最近打开"子菜单中:

1
[[NSDocumentController sharedDocumentController] noteNewRecentDocumentURL:[NSURL URLWithString:stringToFilePath]];

只要URL指向文件系统上存在的文件,它就会按文档所述运行。

如果该URL未指向系统上的文件(例如Web URL或自定义URL方案),则什么都不会发生。

例如,即使我的应用程序处理了URL中使用的方案,该代码也无效,并且在执行过程中不生成日志:

1
[[NSDocumentController sharedDocumentController] noteNewRecentDocumentURL:[NSURL URLWithString:@"http://www.stackoverflow.com"]];

更新:(很久以前)有人找到一种方法来调整此菜单,以使其显示文件是否存在:http://lists.apple.com/archives/cocoa-dev/2007/Apr/ msg00651.html

我成功地成功继承了NSDocumentController的子类,但是从未调用我对方法(NSArray *)recentDocumentURLs的重写。

这并不奇怪,正如文档所说:

This method is not a good one to
override since the internals of
NSDocumentController do not generally
use it.

但是医生没有说要使用什么,张贴者也没有提供更多细节。有什么主意吗?

如果没有解决方案,解决方法是从头开始重写整个菜单。
如果可能的话,我宁愿避免这种情况,因为我免费获得了所有东西(例如当您有两个同名物品时,它也会显示父目录以帮助区分它们)。


您似乎可能必须创建自己的菜单并维护自己的单独列表。此菜单会自动排除不存在的文件。

我认为对于不存在的可移动媒体上的文件也是如此(即,如果媒体又回来了,我认为如果最近的文件没有将其重新发布,则该文件在列表中再次可用。项目)。