【问题标题】:How to set up multiple UIDocumentPickers in the same VC如何在同一个VC中设置多个UIDocumentPickers
【发布时间】:2020-08-16 19:50:41
【问题描述】:
在我工作的一个 VC 中,有三个按钮,每个按钮都应该为不同类型的媒体提供一个文档选择器。我已经配置好了——但我不确定如何处理我的委托方法
func documentPicker(_ controller: UIDocumentPickerViewController, didPickDocumentsAt urls: [URL]) {
我如何监控哪个文档选择器触发了委托方法,因为每个按钮都应该以不同的方式处理此功能?我尝试使用controller.tag,但这似乎不是UIDocumentPickerViewController 的属性。任何指针将不胜感激谢谢。
【问题讨论】:
标签:
ios
swift
uidocumentpicker
【解决方案1】:
您可以在视图控制器中创建 3 个单独的 UIDocumentPickerViewController 实例,并在委托方法中检查 controller 的实例。
private lazy var documentPicker1: UIDocumentPickerViewController = {
let controller = UIDocumentPickerViewController()
controller.delegate = self
return controller
}()
private lazy var documentPicker2: UIDocumentPickerViewController = {
let controller = UIDocumentPickerViewController()
controller.delegate = self
return controller
}()
private lazy var documentPicker3: UIDocumentPickerViewController = {
let controller = UIDocumentPickerViewController()
controller.delegate = self
return controller
}()
func documentPicker(_ controller: UIDocumentPickerViewController, didPickDocumentAt url: URL) {
if controller == documentPicker1 {
} else if controller == documentPicker2 {
}
...
}
或者您可以在view controller 中保留一个属性来跟踪哪个按钮被点击并在委托方法中检查它。