gpt4 book ai didi

cocoa - 在 "Open Recent"菜单中添加一个不指向文件的项目

转载 作者:行者123 更新时间:2023-12-03 16:07:40 25 4
gpt4 key购买 nike

有没有办法将不指向文件系统上存在的文件的项目添加到“打开最近的文件”菜单?

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

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

它的工作方式为 documented ,只要 URL 指向文件系统上存在的文件即可。

如果 URL 不指向系统上的文件(例如 Web URL 或自定义 URL 方案),则不会发生任何情况。

例如,即使我的应用程序处理 URL 中使用的方案,此代码也不会产生任何效果,并且在执行期间不会生成任何日志:

[[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.

但是文档没有说明应该使用什么,海报也没有提供更多细节。有什么想法吗?

<小时/>

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

最佳答案

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

我相信对于不存在的可移动媒体上的文件也是如此(即,如果媒体回来,我相信如果该文件没有被最近的项目推迟,我相信该文件将再次在列表中可用)。

关于cocoa - 在 "Open Recent"菜单中添加一个不指向文件的项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3236529/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com