Как включить выбор файла из UIDocumentPickerViewController? - PullRequest
0 голосов
/ 12 июня 2019

Я работаю над прикреплением файла к электронному письму и хочу сделать это через UIDocumentPickerViewController. По сути, пользователь нажимает на значок, и он может выбрать файл. Все работало, пользователь мог выбрать файл, и я мог получить URL к нему, а затем сделать передачу файла. Недавно он перестал работать и, что удивительно, я не внес никаких изменений в код (да, это звучит глупо). Я заметил, что мой делегат didPickDocumentAt не вызывается. В общем, функция browseFiles вызывается по щелчку и открывается documentBrowser, но выбор файла не работает (функция делегата didPickDocumentAt & uploadDataFromUrl не вызывается)

extension EditViewTableViewController: UIDocumentMenuDelegate, UIDocumentPickerDelegate {
func documentPicker(_ controller: UIDocumentPickerViewController, didPickDocumentAt url: URL) {
    self.uploadDataFromUrl(url: url)
}

public func documentMenu(_ documentMenu: UIDocumentMenuViewController, didPickDocumentPicker documentPicker: UIDocumentPickerViewController) {
    documentPicker.delegate = self
    present(documentPicker, animated: true, completion: nil)
}

func documentPickerWasCancelled(_ controller: UIDocumentPickerViewController) {
    dismiss(animated: true, completion: nil)
}

func browseFiles() {
    let documentBrowserController = UIDocumentPickerViewController(documentTypes: [kUTTypeImage, kUTTypeCompositeContent] as [String], in: UIDocumentPickerMode.import)
    if #available(iOS 11.0, *) {
        documentBrowserController.allowsMultipleSelection = true
    }
    documentBrowserController.delegate = self
    self.present(documentBrowserController, animated: false, completion: nil)
}

func uploadDataFromUrl(url: URL) {
    if FileManager.default.fileExists(atPath: url.path) {
        do {
            let data = try Data(contentsOf: url)
            self.didUploadedTheFile(path: url.path)
        } catch {
            print(error.localizedDescription)
        }
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...