Подтвердить что ты не робот

Как задать имя файла в NSSavePanel?

В NSSavePanel использовался метод runModalForDirectory: file:, который позволяет вам задавать каталог и имя файла для панели сохранения. Но это не рекомендуется в 10.6

При создании NSSavePanel, как я могу задать имя файла без использования устаревшего метода?

4b9b3361

Ответ 1

Используйте метод setNameFieldStringValue:, который был добавлен в 10.6, перед запуском панели сохранения. Если вы также хотите установить каталог по умолчанию, вам понадобится метод setDirectoryURL:, также добавленный в 10.6.

NSString *defaultDirectoryPath, *defaultName;
NSSavePanel *savePanel;
...
[savePanel setNameFieldStringValue:defaultName];
[savePanel setDirectoryURL:[NSURL fileURLWithPath:defaultDirectoryPath]];
[savePanel runModal];

Ответ 2

Существует метод, который я не заметил сначала, 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