#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
, чтобы отслеживать, какая кнопка была нажата, и проверять ее в методе делегирования.