Как настроить несколько UIDocumentPickers в одном VC

#ios #swift #uidocumentpicker

#iOS #swift #uidocumentpicker

Вопрос:

В одном VC, в котором я работаю, есть три кнопки, и каждая кнопка должна представлять средство выбора документа для разных типов носителей. У меня это настроено, но я не уверен, как это сделать, так это обработать мой метод делегирования

 func documentPicker(_ controller: UIDocumentPickerViewController, didPickDocumentsAt urls: [URL]) {
  

Как я могу отслеживать, в каком средстве выбора документов установлен метод делегирования, поскольку каждая кнопка должна обрабатывать эту функцию по-разному? Я пытался использовать controller.tag , но, похоже, это не свойство a 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 , чтобы отслеживать, какая кнопка была нажата, и проверять ее в методе делегирования.