我有一个关于为 OSX Cocoa 应用程序启用“文件打开”菜单项的问题。
我在 AppDelegate 中创建了一个 openDocument 方法,并将菜单项连接到该方法,并验证了当我单击文件打开菜单时该方法被调用。
- (IBAction)openDocument:(id)sender
我的问题是,这真的是实现文件打开菜单功能的方法吗?我一半期望 Cocoa 能够自动显示打开的面板对话框,而不是我必须在 openDocument 方法中编写代码来完成它。难道不是这样吗?
最佳答案
NSDocumentController有 openDocument:
的默认实现。
对于非基于文档的应用程序,您必须提供自定义实现(就像您所做的那样)。
原因可能是,对于基于文档的应用程序,文档 Controller 可以使用打开的面板返回的 URL 内容创建一个 NSDocument
实例。
对于其他应用程序,在用户选择文件后应用程序应该执行的操作不太明显。因此,您必须通过代码指定该行为。
如果您的应用适合基于文档的模型,您可以查看 Document-Based App Programming Guide 。当采用 Cocoa 文档架构时,您可以免费获得许多默认行为。
当您在“新建项目”向导中选中“创建基于文档的应用程序”复选框时,Xcode 将创建所有必需的类。
关于macos - 在 Cocoa App 中启用打开菜单,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23522813/