在导航服务世界中,可以指定kNavDontConfirmReplacement
作为创建NavDialogRef
的选项,在使用已存在的文件名保存时,不会要求用户确认替换文件。如何使用Cocoa NSSavePanel
?
答案 0 :(得分:4)
以下是如何做到的:
- (NSString*)panel:(id)sender userEnteredFilename:(NSString*)filename confirmed:(BOOL)okFlag
okFlag
为false
,请返回filename
filename
保留为代理NSString*
NSSavePanel
返回您的代码时,从您的委托方法中提取文件名的值,并丢弃NSSavePanel
告诉您的任何文件名(应该是您唯一的字符串)。由于操作系统在进行确认 - 替换检查之前调用userEnteredFilename:
,因此它使您有机会获得用户指定的内容,而不会让操作系统知道该秘密。唯一字符串将确保不会意外弹出确认替换对话框。
总而有效。
答案 1 :(得分:0)
不,使用NSSavePanel没有简单的方法。理论上,您可以使用类别扩展NSSavePanel并覆盖某些私有方法。我快速浏览了一下,没有什么简单的。
答案 2 :(得分:0)
您的客户在面对NSSavePanel时会发出确切的确认提醒,因此请勿对其进行自定义。
我不确定您正在计划什么样的自定义确认覆盖对话框,但我建议您使用NSOpenPanel,并使用“创建新文件”按钮自定义此对话框? (我相信你可以通过setAccessoryView API来做到这一点。)
例如,如果您要求客户选择要附加新数据的文件,NSOpenPanel将会很好地工作;如果客户想要将新数据保存到新文件(而不是附加到现有文件),则只需再点击一次“创建新文件”按钮。