簡體   English   中英

如何在 FIFinderSync 中打開 NSSavePanel

[英]How to open NSSavePanel in FIFinderSync

我正在制作一個可以在選定文件夾中創建文件的 Finder 擴展。我已經將“用戶選定文件”的“權限/訪問”設置為“讀/寫”。 但是面板不顯示。

在此處輸入圖像描述

    override func menu(for menuKind: FIMenuKind) -> NSMenu {
        // Produce a menu for the extension.
        let menu = NSMenu(title: "")
        menu.addItem(withTitle: "Example Menu Item", action: #selector(sampleAction(_:)), keyEquivalent: "")
        return menu
    }
    
    @IBAction func sampleAction(_ sender: AnyObject?) {
        let savePanel = NSSavePanel()
        savePanel.canCreateDirectories = true
        savePanel.showsTagField = false
        savePanel.nameFieldStringValue = "newfile.txt"
        savePanel.level = NSWindow.Level(rawValue: Int(CGWindowLevelForKey(.modalPanelWindow)))
        savePanel.begin { (result) in
            if result.rawValue == NSApplication.ModalResponse.OK.rawValue {
                //write file
            }
        }
    }

我設置FIFinderSyncController.default().directoryURLs = [URL(fileURLWithPath: "/")]

我發現一些 Finder 擴展應用程序(例如“Easy New File”)可以打開保存面板。 他們是如何實現的?

添加NSApp.activate(ignoringOtherApps: true)DispatchQueue.main.async

        NSApp.activate(ignoringOtherApps: true)
        DispatchQueue.main.async {
            let savePanel = NSSavePanel()
            savePanel.directoryURL = URL(fileURLWithPath: target.path)
            savePanel.canCreateDirectories = true
            savePanel.showsTagField = false
            savePanel.nameFieldStringValue = "newfile".localized
            savePanel.level = NSWindow.Level(rawValue: Int(CGWindowLevelForKey(.modalPanelWindow)))
            if (savePanel.runModal() == NSApplication.ModalResponse.OK),let url = savePanel.url{
                //wirte file to url
            }
        }

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM