2

我有一个可以加载第三方代码的应用程序。第三方代码可以执行的功能之一是添加应用程序可以导出到的格式。我正在使用saveDocumentTo:作为实施出口的手段。

我知道我可以通过覆盖writableTypesForSaveOperation:我的文档来自定义要保存的可用文件类型的菜单,但是不起作用的是,在保存对话框中,从菜单中选择时没有将适当的文件扩展名添加到文件名中。

我尝试覆盖fileNameExtensionForType:saveOperation:,但它甚至没有被调用。

如何使“保存”对话框找到正确的文件扩展名(假设在编译时不知道)?

4

1 回答 1

3

我已经在保存面板的自定义导出附件视图中完成了此操作。NSSavePanel每当用户更改他们想要导出的格式时,自定义导出附件视图只会更改允许的文件类型。

如果要设置扩展名,请传递一个包含该扩展名的元素的数组。

文档有一些关于-[NSSavePanel setAllowedFileTypes:]'s 在这方面的行为的重要细节,用于支持更复杂的情况:

讨论

文件类型可以是通用文件扩展名或 UTI。nil 值表示可以使用任何文件类型。默认值为无。

如果用户未指定扩展名,则 allowedFileTypes 中的第一项将用作保存面板的扩展名。如果用户指定了不在数组中的类型,并且allowsOtherFileTypes 为YES,则在提示保存时将显示另一个对话框。

NSOpenPanel:在低于 v10.6 的 Mac OS X 版本中,此属性被忽略。对于链接到 v10.6 及更高版本的应用程序,此属性确定应在打开的面板中启用哪些文件。使用已弃用的方法来显示打开的面板(采用 types: 参数的方法)将覆盖此值,不应使用。允许的文件类型可以在面板运行时更改(例如,从附件视图)。文件类型可以是通用文件扩展名或 UTI。这也称为“启用的文件类型”。nil 值表示应启用所有文件。

在某些情况下,您可能还会看到专用的导出对话框,如果您有几种不同的格式,这可以降低其复杂性。和以前一样,您只需更新允许的文件类型以支持这一点(在这种情况下不一定是动态的)。

于 2012-02-28T09:44:23.510 回答