Ios 无法使用UIViewRepresentable&UIDocumentPicker选择文件夹
我正在尝试创建一个选择器,供用户在SwiftUI应用程序中选择文件夹。但是,似乎还没有任何SwiftUI文档选择器,因此我尝试使用UIViewRepresentable来显示文档选择器,使用此处概述的文件夹文档选择器:。但是,如下图所示,我实际上无法以任何方式选择文件夹-我是否缺少使用SwiftUI拾取程序的特定选项 FolderPicker代码: 结构FolderPicker:UIViewControllerRepresentable{ @绑定var folderURL:String? func makeCoordinator->Coordinator{ 返回FolderPicker。协调人属性:self } func makeUIViewControllercontext:UIViewControllerRepresentableContext->UIDocumentPickerViewController{ 让picker=UIDocumentPickerViewController文档类型:[kUTTypeFolder],位于:。导入 picker.delegate=context.coordinator 回程选择器 } func updateUIViewController_uViewController:UIDocumentPickerViewController,上下文:UIViewControllerRepresentableContext{} 类协调器:NSObject,UIDocumentPickerDelegate{ 变量父项:FolderPicker initparent:FolderPicker{ self.parent=parent } 内部函数文档选择器\控制器:UIDocumentPickerViewController,didPickDocumentAt url:url{ 打印URL parent.folderURL=url.absoluteString } } } 它位于TestView中: 结构测试视图:视图{ @状态变量displayPicker=false var body:一些观点{ 按钮操作:{displayPicker.toggle},标签:toggle .sheetisPresented:$showPicker{ FolderPickerfolderURL:$url } } }Ios 无法使用UIViewRepresentable&UIDocumentPicker选择文件夹,ios,swiftui,uikit,Ios,Swiftui,Uikit,我正在尝试创建一个选择器,供用户在SwiftUI应用程序中选择文件夹。但是,似乎还没有任何SwiftUI文档选择器,因此我尝试使用UIViewRepresentable来显示文档选择器,使用此处概述的文件夹文档选择器:。但是,如下图所示,我实际上无法以任何方式选择文件夹-我是否缺少使用SwiftUI拾取程序的特定选项 FolderPicker代码: 结构FolderPicker:UIViewControllerRepresentable{ @绑定var folderURL:String? fun
kUTTypeFolder不是字符串 正确的方法是
let picker = UIDocumentPickerViewController(documentTypes: [kUTTypeFolder as String], in: .import)
常量kUTTypeFolder来自import CoreServices
此外,在模式:UIDocumentPickerMode和可选的func documentPicker\uController:UIDocumentPickerServiceController中,公共initdocumentTypes allowedUTIs:[String]已被弃用
因此,请使用公共便利初始化来打开contentTypes contentTypes:[UTType]和可选的func documentPicker\uController:UIDocumentPickerViewController,didPickDocumentsAt URL:[URL]
最终代码为:
struct FolderPicker: UIViewControllerRepresentable {
@Binding var folderURL: String?
func makeCoordinator() -> Coordinator {
return FolderPicker.Coordinator(parent: self)
}
func makeUIViewController(context: UIViewControllerRepresentableContext<FolderPicker>) -> UIDocumentPickerViewController {
let picker = UIDocumentPickerViewController(forOpeningContentTypes: [.folder])
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
}
func documentPicker(_ controller: UIDocumentPickerViewController, didPickDocumentsAt urls: [URL]) {
guard let url = urls.first else {
return
}
print(url)
parent.folderURL = url.absoluteString
}
}
}
这是你的答案吗?