问题标签 [nssavepanel]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
4487 浏览

objective-c - NSSavePanel 文件路径

我只在处理文本文件时使用NSSavePanel 。如果我有要导出的图像,我使用NSOpenPanel以便用户可以选择一个目录,并且我不会陷入沙箱文件路径限制。不过,这一次,我想使用 NSSavePanel 让用户保存图像文件(bmp、gif、jpeg、jp2、png)。

这个 NSSavePanel 有一个 AccessoryView 控件,允许用户使用NSPopupMenu选择图形格式。它的索引是formatIndex1。我知道如果应用程序被沙盒化,代码会失败。这是因为用户选择的确切路径是 path0,并且上面的代码在到达 exportfile2 之前为其附加了文件扩展名。那么我该如何获取带有文件扩展名的确切路径。 如果“隐藏扩展名”关闭,预览会自动附加文件扩展名。然而,预览不会无法导出图像。

谢谢您的帮助。

0 投票
4 回答
2167 浏览

objective-c - 从默认 NSSavePanel 获取文件 URL 路径

如何从默认的“另存为”对话框表中获取文件 URL?我在 Xcode 中使用带有 Snow Leopard 10.6 SDK 的基于文档的应用程序。

我已经搜索了两天的互联网和 Apple 文档,只找到了使用“另存为”对话框表的唯一实例的答案;每个人似乎都想通过制作自己的文件 -> 保存功能来重新发明轮子,但这不是我想要做的——我已经做到了!

例如,我不想使用这种方法,我不想用类似的东西替换默认-(void)saveDocumentAs:senderNSDocument

NSSavePanel相反,我想要的只是用户从默认工作表中为其文件选择的文件 URL 。因为,正如您从这个测试中看到的fileTypeFromLastRunSavePanel那样,它在块中不起作用,所以它要么使用默认保存面板而不是文件 URL 获取文件类型,要么从自定义保存面板而不是文件获取文件 URL类型...至少不是fileTypeFromLastRunSavePanel.

  1. 用户打开文件
  2. 用户修改文件
  3. 用户执行“另存为...”
  4. 用户输入文件的新名称并按“保存”
  5. 我需要文件的新名称。如何在不创建自己的 savePanel 实例的情况下获得它?

[self fileURL]编辑:我在 NSDocument 子类中尝试过

方法,但它返回 null 除非文档已经保存到磁盘。

编辑 2: 只是为了真正明确地澄清我在这里问什么,我如何从默认的 NSSavePanel savePanel 中获取用户选择的 URL,而不是我自己的 NSSavePanel 的 savePanel 实例?我可以在不创建 NSSavePanel 的子类并覆盖其方法的情况下做到这一点吗?我认为您将获得某种对用户在默认 savePanel 中选择的文件的 URL 引用,而不必将该功能添加到您自己的 NSSavePanel 实例中是有意义的。

0 投票
1 回答
412 浏览

objective-c - 是否可以继承 NSSavePanel?

我想知道是否有办法继承 NSSavePanel。或者,如果您要创建一个虚拟对象,您将如何模仿 NSSavePanel 的 beginSheetModalForWindow:CompletionHandler 函数?

在 .m 类文件中实现函数时,我对如何实现块处理程序一无所知。

0 投票
1 回答
300 浏览

macos - 如何自定义 NSSavePanel 中的“取消”按钮标题?

我可以使用-setPrompt:方法来自定义确定按钮。但我没有找到自定义取消的方法。我能做到这一点吗?

0 投票
1 回答
244 浏览

osx-mavericks - NSSavePanel 用于在沙盒化后保存文件

我有一个 mac AVRecording 应用程序,它录制视频并将其保存到通过 NSSavePanel 选择的位置。在我将应用程序沙盒化之前,它运行良好。

对于沙盒,我添加了以下权利 com.apple.security.files.user-selected.read-write com.apple.security.assets.movi​​es.read-write com.apple.security.files.downloads.read-write 这仅允许保存到下载和电影文件夹。

如何将我的文件保存到任何所需的位置、桌面、文档等?

0 投票
0 回答
434 浏览

objective-c - 沙盒应用程序中的 NSSavePanel setNameFieldStringValue:@"Untitled" 错误

在文档中找不到任何内容,这似乎是一个错误:如果指定@"Untitled"NSSavePanel's name 提交的字符串值,则在运行时文本字段为空。如果指定其他任何内容 - 一切正常(OSX 10.8,SDK 10.8)。它只发生在沙盒应用程序中。

这是一个要重现的示例项目:https ://www.dropbox.com/s/catecqe68a0omp3/savepanel.zip

有人有同样的问题吗?

0 投票
1 回答
287 浏览

objective-c - 如何在 NSSavepanel 中隐藏另存为和标记字段

我正在尝试创建一个自定义保存面板,我可以使用accessoryView属性添加我的字段和复选框,NSSavePanel但我也想隐藏默认保存为标签字段和标签标签和字段,如图所示在此处输入图像描述有没有办法做到这一点?

来自 json 加速器应用程序的屏幕截图。是它NSSavepanel还是任何其他控制?

0 投票
1 回答
600 浏览

macos - Mac CGDataConsumerCreateWithFilename:无法打开“.myfile.pdf”进行写入:不允许操作

我正在生成一个 PDF 文档并为用户提供将其保存到磁盘的选项。我向他们展示了一个NSSavePanel供他们选择要保存的文件名。如果他们选择了一个已经存在的文件,它会提示他们是否确定并想要替换该文件。如果他们同意替换文件,那么我会生成 PDF 并将其写入所选的 URL。

但是,我的写入失败并出现以下错误:

我有适当的权利来写入磁盘上的文件。碍事的文件是我在之前的测试中生成的文件。在将我的文件写入该 URL 之前,我是否需要明确删除现有文件,或者有什么方法可以告诉系统它可能会覆盖现有文件?

这是我用来启动的NSSavePanel代码(我的代码保存他们最后选择的目录,以便它可以默认为所有未来保存的相同位置):

这是我用来将文件写入给定 URL 的代码,它只是标准的 PDFKit -writeToURL:

0 投票
1 回答
257 浏览

macos - 我如何知道从 NSSavePanel 中选择了哪种文件类型?

我正在 Mavericks 系统上编写应用程序。我正在调用 NSSavePanel 来保存文件。我可以给面板一个 NSArray 的 UTI 以用作可能的保存类型,并且(我猜)面板将自动生成一个输出类型的附件视图。在面板完成块期间,我可以使用面板的“URL”属性来获取(可能创建和)写入文件。但是似乎没有属性可以指示选择了哪种输出类型。

我应该查看 URL 的文件扩展名吗?这是因为有一个允许自由扩展命名的选项吗?(我这里没有打开该选项。)

另外:我的 NSArray 的 UTI 是一个随机类型,后跟一个固定类型。我目前仅在不等于随机类型时才添加固定类型。如果我多次使用相同的 UTI,面板会崩溃,还是会折叠重复项?如果它不会崩溃,那么我可以通过无条件追加来节省时间。

0 投票
1 回答
67 浏览

cocoa - 沙盒环境下关闭 NSSavePanel

在沙盒环境中,NSSavePanel由 Powerbox 进程控制。

我想知道是否有一种方法可以在NSSavePanel不让用户明确单击“取消”或按 Esc 的情况下解除?例如,如果我想在 的附件视图中添加“关闭”按钮NSSavePanel,有没有办法做到这一点?