问题描述
我认为使用 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