在 AppKit 应用程序中的 SwiftUI 中选择文件或目录

问题描述

如何在 SwiftUI 中显示文件对话框以选择目录或文件

我认为使用 NSViewRepresentable 来包装 NSOpenPanel 是行不通的,因为它需要的是 NSView 而不是 NSPanel。

任何其他想法、技巧或链接? 我发现的一切都是关于 UIKit。

解决方法

导入 SwiftUI

struct FolderSelector: View {
    
    var body: some View {
        
            Button("Choose Folder") {
                self.selectFolder()
            }
        }
    }
    
    func selectFolder() {
        
        let folderChooserPoint = CGPoint(x: 0,y: 0)
        let folderChooserSize = CGSize(width: 500,height: 600)
        let folderChooserRectangle = CGRect(origin: folderChooserPoint,size: folderChooserSize)
        let folderPicker = NSOpenPanel(contentRect: folderChooserRectangle,styleMask: .utilityWindow,backing: .buffered,defer: true)

        folderPicker.canChooseDirectories = true
        folderPicker.canChooseFiles = true
        folderPicker.allowsMultipleSelection = true
        folderPicker.canDownloadUbiquitousContents = true
        folderPicker.canResolveUbiquitousConflicts = true

        folderPicker.begin { response in
            
            if response == .OK {
                let pickedFolders = folderPicker.urls
                
                self.selectedFolder.getFileList(at: pickedFolders)
            }
        }
    }
}

亲切的问候, MacUserT