在导航服务世界的一个可能指定 kNavDontConfirmReplacement 作为一个选项,以创建一个 NavDialogRef 这不会要求用户确认该替换的文件保存时文件名称中已经存在。我怎么指定一个等效行为与可可 NSSavePanel?

有帮助吗?

解决方案

这里是它如何可以做到:

  1. 增加的委托处理NSSavePanel回调
  2. 重写 - (NSString*)panel:(id)sender userEnteredFilename:(NSString*)filename confirmed:(BOOL)okFlag 在你的委托
  3. 在委托:
    1. 如果 okFlagfalse, 返回 filename
    2. 否则,保留 filename 作为一个 NSString* 在你的委托
    3. 返回的一些独特的串,是极不可能的姓名的一个实际的文件
  4. NSSavePanel 返回到代码,拉价值的文件从你的委派方法,并放弃任何文件 NSSavePanel 告诉你,(这应该是你唯一的string)。

由于 userEnteredFilename: 被称为操作系统之前,确认-取代检查它给你一个机会,以获得什么样的用户指定的,而不会让操作系统上的秘密。唯一串将确保确认-取代对话是不出意外。

总而有效。

其他提示

没有,有没有简单的方法与NSSavePanel做到这一点。从理论上讲,你可以用一个类别扩展NSSavePanel并覆盖某些私有方法。我刚刚看了一下,但并没有什么简单的有关情况。

您的客户会期待确切确认警报当遇到NSSavePanel,所以不自定义它。

我不知道什么样的你打算定制确认重写的对话框,但我可能会建议你使用NSOpenPanel代替,并自定义此对话框中有“新建文件”按钮? (我相信你可以通过setAccessoryView API做到这一点。)

例如,如果你问你的客户选择一个文件,以新数据添加到时,NSOpenPanel会工作得很好;如果客户希望将新的数据保存到一个新文件(而不是附加到现有文件),“创建新文件”按钮只是另一次点击。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top