在 Cocoa App 中启用打开菜单

mfc*_*mfc 4 macos cocoa openfiledialog

我有一个关于为 OSX Cocoa 应用程序启用“文件打开”菜单项的问题。

我在 AppDelegate 中创建了一个 openDocument 方法,并将菜单项连接到该方法,并验证了当我单击文件打开菜单时该方法被调用。

 - (IBAction)openDocument:(id)sender
Run Code Online (Sandbox Code Playgroud)

我的问题是,这真的是实现文件打开菜单功能的方法吗?我一半期望 Cocoa 能够自动显示打开的面板对话框,而不是我必须在 openDocument 方法中编写代码来完成它。难道不是这样吗?

Tho*_*ing 5

NSDocumentController有一个默认实现openDocument:
对于非基于文档的应用程序,您必须提供自定义实现(就像您所做的那样)。

原因可能是,对于基于文档的应用程序,文档控制器可以使用NSDocument打开面板返回的 URL 内容创建一个实例。
对于其他应用程序,在用户选择文件后应用程序应该执行的操作不太明显。所以你必须通过代码指定该行为。

如果您的应用程序适合基于文档的模型,您可以查看基于文档的应用程序编程指南。当采用 Cocoa 文档架构时,您可以免费获得许多默认行为。

当您在“新建项目”向导中选中“创建基于文档的应用程序”复选框时,Xcode 将创建所有必需的类。