Gui*_*ume 7 macos cocoa menu nsdocument recent-documents
有没有办法将不指向文件系统上存在的文件的项目添加到"打开最近"菜单?
在不基于NSDocument的应用程序中,我可以使用以下代码将项目添加到"打开最近"子菜单:
[[NSDocumentController sharedDocumentController] noteNewRecentDocumentURL:[NSURL URLWithString:stringToFilePath]];
Run Code Online (Sandbox Code Playgroud)
只要URL指向文件系统上存在的文件,它就可以按文档记录.
如果网址未指向系统上的文件(例如网址网址或自定义网址方案),则不会发生任何操作.
例如,即使我的应用程序处理URL中使用的方案,此代码也无效,并且在执行期间不生成日志:
[[NSDocumentController sharedDocumentController] noteNewRecentDocumentURL:[NSURL URLWithString:@"http://www.stackoverflow.com"]];
Run Code Online (Sandbox Code Playgroud)
更新:有人发现(很久以前)一种调整此菜单的方法,让它显示文件是否存在:http://lists.apple.com/archives/cocoa-dev/2007/Apr/msg00651.html
我成功地设法子类化NSDocumentController,但我从不调用我的方法 - (NSArray*)recentDocumentURLs.
这不是很令人惊讶,正如医生说的那样:
由于NSDocumentController的内部通常不使用它,因此这种方法不适合覆盖.
但该文件没有说明要使用什么,而海报没有提供更多细节.任何的想法?
如果没有解决方案,解决方法是从头开始重写整个菜单.如果可能的话,我宁愿避免这种情况,对于我免费获得的所有东西(比如当你有两个同名的项目时,它也会显示父目录以帮助区分它们).
您可能需要创建自己的菜单并维护自己的单独列表.此菜单自动排除不存在的文件.
我相信对于不存在的可移动媒体上的文件也是如此(即,如果媒体返回,我相信如果文件没有被更新的项目推迟,则该文件在列表中再次可用).
| 归档时间: |
|
| 查看次数: |
3030 次 |
| 最近记录: |