NSSavePanel曾经有一个runModalForDirectory:file:方法,它允许您预设保存面板的目录和文件名。但这在10.6中被弃用
创建NSSavePanel时,如何在不使用弃用方法的情况下预设文件名?
答案 0 :(得分:33)
在运行保存面板之前,使用10.6中添加的setNameFieldStringValue:
方法。如果您也想设置默认目录,则需要{10}中添加的setDirectoryURL:
方法。
NSString *defaultDirectoryPath, *defaultName;
NSSavePanel *savePanel;
...
[savePanel setNameFieldStringValue:defaultName];
[savePanel setDirectoryURL:[NSURL fileURLWithPath:defaultDirectoryPath]];
[savePanel runModal];
答案 1 :(得分:5)
最初我没有注意到的方法是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