如何在MacOS中显示NSSavePanel?

9
我会尽力帮助你翻译。以下是您需要翻译的内容:

我正在尝试在Mac OSX上显示NSSavePanel(或任何“保存文件对话框”)。我正在使用Swift 4(或4.2?我不确定确切版本)在XCode Version 9.3(9E145)中构建COCOA应用程序。

我已经尝试了一切......

像这样吗?

    let savePanel = NSSavePanel()
    savePanel.begin { (result) in
        if result.rawValue == NSApplication.ModalResponse.OK.rawValue {


        }
    }

这个?

    let savePanel = NSSavePanel()
    savePanel.canCreateDirectories = true
    savePanel.showsTagField = false
    savePanel.nameFieldStringValue = "result.csv"
    savePanel.level = NSWindow.Level(rawValue: Int(CGWindowLevelForKey(.modalPanelWindow)))
    savePanel.begin { (result) in
        if result.rawValue == NSApplication.ModalResponse.OK.rawValue {


        }
    }

还有很多其他的方式...

我错过了什么?谢谢!


2
虽然与您的问题无关,但为什么不直接使用savePanel.level = .modalPanelsavePanel.begin { if $0 == .OK { print("success") } }呢? - Leo Dabus
1
@LeoDabus 谢谢! - Ish Thomas
这可能会有所帮助。这是NSOpenPanel,但您可以轻松适应保存操作。https://dev59.com/ZV4c5IYBdhLWcg3wXJRX#28015428 - Leo Dabus
1个回答

18

你的应用程序是否被沙盒化?(项目>功能>应用程序沙盒)

如果是,请确保将“文件访问”更改为“用户选择的文件”的读/写权限。

当我这样做时,你的第一段代码片段对我来说可以正常工作。

输入图片说明


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接