问题描述
在一个VC中,我正在使用三个按钮,每个按钮应显示一个用于不同类型媒体的文档选择器。我已经配置好了-但是我不确定该怎么做才能处理我的委托方法
func documentPicker(_ controller: UIDocumentPickerViewController,didPickDocumentsAt urls: [URL]) {
由于每个按钮应该以不同的方式处理此功能,因此如何监视哪个文档选取器触发了委托方法?我尝试使用controller.tag
,但这似乎不是UIDocumentPickerViewController
的属性。任何指针将不胜感激。
解决方法
您可以在视图控制器中创建UIDocumentPickerViewController
的3个单独实例,并在委托方法中检查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
中保留一个属性,以跟踪被点击的按钮并在委托方法中对其进行检查。