问题描述
我尝试实现文档选择器。我发现了:
UIDocumentPickerViewController doesn't show any contents on Mac Catalyst
那里的解决方案有效。但是,我现在想做的是在演示工作表的同时使用UIDocumentPickerViewController
。简单的伪代码:
struct ContentView: View,DropDelegate {
var body: some View {
Text("there is a sheet")
.sheet(isPresented: .constant(true)) {
Button("choose") {
let picker = DocumentPickerViewController(
supportedTypes: [],onPick: { urls in
print(urls)
},ondismiss: {
print("dismiss")
}
)
UIApplication.shared.windows[0].rootViewController!.present(picker,animated: true)
}
}
}
}
class DocumentPickerViewController: UIDocumentPickerViewController,UIDocumentPickerDelegate {
private let ondismiss: () -> Void
private let onPick: ([URL]) -> ()
init(supportedTypes: [String],onPick: @escaping ([URL]) -> Void,ondismiss: @escaping () -> Void) {
self.ondismiss = ondismiss
self.onPick = onPick
super.init(documentTypes: supportedTypes,in: .open)
self.allowsMultipleSelection = true
self.delegate = self
}
required init?(coder: NSCoder) {
fatalError("init(coder:) has not been implemented")
}
func documentPicker(_ controller: UIDocumentPickerViewController,didPickDocumentsAt urls: [URL]) {
self.onPick(urls)
}
func documentPickerWasCancelled(_ controller: UIDocumentPickerViewController) {
self.ondismiss()
}
}
如果我现在按下按钮,则会收到警告:
Warning: Attempt to present <SwiftUICatalyst.DocumentPickerViewController: 0x102910560> on ... which is already presenting <_TtGC7SwiftUIP13$7fff6c0c8c6c22SheetHostingControllerVS_7AnyView_: 0x101630cf0>
我想到的唯一解决方案是不使用第一个.sheet
,但我确实需要在工作表中显示信息和文件选择按钮。
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)