5

NSDocument考虑支持两种文档类型(例如 BMP 和 JPEG)的 Cocoa 。虽然一种类型没有保存选项(例如 BMP),但另一种类型有(例如 JPEG 的压缩级别)。

你如何实现这一点?

我知道您应该覆盖prepareSavePanel:并设置给定的附件视图NSSavePanel。但是,这样做会用文档类型弹出窗口替换默认的附件视图。

如果使用自定义附件视图,是否需要重新创建文档类型弹出窗口?

如果是,如何将所选文档类型和附加保存选项传递给NSDocument写入方法?

如果不是,我如何才能仅在选择了相应的文档(例如 JPEG)类型时才显示其他保存选项(例如压缩级别)?中是否有用于更改文档类型的委托方法NSSavePanel

4

1 回答 1

0

我很确定是的,如果你想要这样的自定义附件视图,你必须提供整个东西。真可惜——但提交雷达并没有什么坏处!

可以提供您自己的附件视图-prepareSavePanel:,然后覆盖-fileTypeFromLastRunSavePanel以返回所选类型。但是NSDocument,令人讨厌的是, 的文档没有承诺它会尊重这一点。试试看!

如果这不起作用,看起来您需要提供自己的-runModalSavePanelForSaveOperation:delegate:didSaveSelector:contextInfo:. 按照 Apple 对方法的描述:

此方法的默认实现首先确保使用 Cocoa Bindings 的 NSEditorRegistration 非正式协议注册的任何编辑器已提交其更改,然后创建一个保存面板,如果有多个文件类型,则添加一个标准的“文件格式”附件视图用户进行选择,[self shouldRunSavePanelWithAccessoryView] 返回 YES,设置面板的各种属性,调用 [self prepareSavePanel:theSavePanel] 提供自定义机会,然后呈现面板。如果用户确定,则调用面板 -saveToURL:ofType:forSaveOperation:delegate:didSaveSelector:contextInfo:。

请注意的文档-writableTypesForSaveOperation:

您可以在创建自定义保存面板附件视图时调用此方法,以轻松呈现与 NSDocument 在其标准文件格式弹出菜单中相同的类型集。

于 2013-04-08T15:10:50.853 回答