У меня есть следующий ViewController, который реализует функциональность для импорта файлов в приложение, используя UIDocumentPickerViewController
:
class MyViewController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
}
func importFromFiles(origin: UIViewController?) {
let documentPicker = UIDocumentPickerViewController(documentTypes: [kUTTypeContent as String], in: .import)
documentPicker.delegate = self
documentPicker.allowsMultipleSelection = true
origin?.present(documentPicker, animated: true, completion: nil)
}
}
Как видите, метод importFromFiles
получает ViewController, который является просто активным VC. Этот метод вызывается из AppDelegate
.
На данный момент метод documentPicker
выглядит следующим образом:
extension MyViewController: UIDocumentPickerDelegate {
func documentPicker(_ controller: UIDocumentPickerViewController, didPickDocumentsAt urls: [URL]) {
print("Files picked")
}
}
Средство выбора отображается и отклоняется правильно, но делегат никогда не вызывается, и поэтому print
никогда не выполняется.
Любые советы приветствуются.
Редактировать 1
Вызов метода importFromFiles
происходит внутри AppDelegate
. Более конкретно, это происходит при определении закрытия для настройки SwiftTweaks:
MyTweaks.importFromFiles.addClosure {
let topViewController = visibleViewController(root: self.window?.rootViewController)
let myVC: MyViewController = MyViewController()
myVC.importFromFiles(origin: topViewController)
}