15

NSSavePanel 曾经有一个 runModalForDirectory:file: 方法,可以让您为保存面板预设目录和文件名。但这在 10.6 中已弃用

创建 NSSavePanel 时,如何在不使用已弃用方法的情况下预设文件名?

4

2 回答 2

36

setNameFieldStringValue:在运行保存面板之前使用 10.6 中添加的方法。如果您也想设置默认目录,则需要该setDirectoryURL:方法,该方法也在 10.6 中添加。

NSString *defaultDirectoryPath, *defaultName;
NSSavePanel *savePanel;
...
[savePanel setNameFieldStringValue:defaultName];
[savePanel setDirectoryURL:[NSURL fileURLWithPath:defaultDirectoryPath]];
[savePanel runModal];
于 2011-07-13T02:31:08.180 回答
7

有一个方法我一开始没有注意到,NSSavePanel#setNameFieldStringValue,它设置文件名。

这是 macruby 语法的完整示例:

def run_save_settings_dialog(sender)
  dialog = NSSavePanel.savePanel
  dialog.title = "Save Settings"
  dialog.canCreateDirectories = true
  dialog.showsHiddenFiles = true
  dialog.nameFieldStringValue = "MyFile"
  dialog.canChooseFiles = true
  dialog.canChooseDirectories = false
  dialog.allowsMultipleSelection = false
  dialog.setDirectoryURL NSURL.fileURLWithPath("some/path")
  if dialog.runModal == NSFileHandlingPanelOKButton
    save_settings(dialog.URL)
  end
end

def save_settings(file_url)
  File.open(file_url.path, 'w') {|f| f.write "Stuff" }
end
于 2011-07-13T02:38:39.613 回答