【发布时间】:2023-03-19 01:46:01
【问题描述】:
我正在尝试为用户创建一个选择器,以便在 SwiftUI 应用程序中选择一个文件夹。但是,似乎还没有任何 SwiftUI 文档选择器,因此我尝试使用UIViewRepresentable 来显示使用此处概述的文件夹文档选择器的文档选择器:https://developer.apple.com/documentation/uikit/view_controllers/providing_access_to_directories。但是,如下图所示,我实际上无法以任何方式选择文件夹 - 我是否缺少将选择器与 SwiftUI 一起使用的特定内容?
FolderPicker代码:
struct FolderPicker: UIViewControllerRepresentable {
@Binding var folderURL: String?
func makeCoordinator() -> Coordinator {
return FolderPicker.Coordinator(parent: self)
}
func makeUIViewController(context: UIViewControllerRepresentableContext<FolderPicker>) -> UIDocumentPickerViewController {
let picker = UIDocumentPickerViewController(documentTypes: ["kUTTypeFolder"], in: .import)
picker.delegate = context.coordinator
return picker
}
func updateUIViewController(_ uiViewController: UIDocumentPickerViewController, context: UIViewControllerRepresentableContext<FolderPicker>) {}
class Coordinator: NSObject, UIDocumentPickerDelegate {
var parent: FolderPicker
init(parent: FolderPicker) {
self.parent = parent
}
internal func documentPicker(_ controller: UIDocumentPickerViewController, didPickDocumentAt url: URL){
print(url)
parent.folderURL = url.absoluteString
}
}
}
在TestView:
struct TestView: View {
@State var displayPicker = false
var body: some View {
Button(action: {displayPicker.toggle}, label: "toggle")
.sheet(isPresented: $showPicker) {
FolderPicker(folderURL: $url)
}
}
}
【问题讨论】: