Как настроить несколько UIDocumentPickers в одном VC
В одной VC, с которой я работаю, есть три кнопки, и каждая кнопка должна представлять средство выбора документов для разных типов носителей. У меня это настроено, но я не уверен, как это сделать, так это обработать мой метод делегата
func documentPicker(_ controller: UIDocumentPickerViewController, didPickDocumentsAt urls: [URL]) {
Как я могу отслеживать, какое средство выбора документов активировало метод делегата, поскольку каждая кнопка должна обрабатывать эту функцию по-разному? Я пытался использоватьcontroller.tag
, но это не похоже на свойство UIDocumentPickerViewController
. Любые указатели будут очень благодарны.
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
чтобы отследить, какая кнопка была нажата, и проверить ее в методе делегата.