gpt4 book ai didi

macos - NSDocument 的 NSSavePanel 的自定义附件 View

转载 作者:行者123 更新时间:2023-12-03 16:15:41 29 4
gpt4 key购买 nike

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

你如何实现这个?

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

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

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

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

最佳答案

我非常确定,是的,如果您想要像这样的自定义附件 View ,您必须提供整个内容。遗憾的是,但提交雷达报告也没有什么坏处!

可以在 -prepareSavePanel: 中提供您自己的附件 View ,然后覆盖 -fileTypeFromLastRunSavePanel 以返回所选类型。然而,令人烦恼的是,NSDocument 的文档没有 promise 它会尊重这一点。尝试一下看看!

如果这不起作用,您似乎需要提供自己的 -runModalSavePanelForSaveOperation:delegate:didSaveSelector:contextInfo: 实现。请遵循Apple对该方法的描述:

The default implementation of this method first makes sure that any editor registered using Cocoa Bindings' NSEditorRegistration informal protocol has committed its changes, then creates a save panel, adds a standard "file format" accessory view if there is more than one file type for the user to choose from and [self shouldRunSavePanelWithAccessoryView] returns YES, sets various attributes of the panel, invokes [self prepareSavePanel:theSavePanel] to provide an opportunity for customization, then presents the panel. If the user OKs the panel -saveToURL:ofType:forSaveOperation:delegate:didSaveSelector:contextInfo: is invoked.

-writableTypesForSaveOperation: 的文档请注意:

You can invoke this method when creating a custom save panel accessory view to easily present the same set of types that NSDocument would in its standard file format popup menu.

关于macos - NSDocument 的 NSSavePanel 的自定义附件 View ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15357641/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com