DocumentPickerDelegate не работает после обновления до swift 3
Я пытался установить DocumentPicker для получения файла из iCloud, но на самом деле мое приложение открывает documentMenu для импорта файла (iCloud, Dropbox), и когда я выбираю iCloud, я представляю средство выбора документов со своими файлами. Когда мне приходится делегировать файл в documentPicker(_ ...), функция documentPicker.delegate=self.delegate никогда не вызывается, потому что мой класс не соответствует протоколу.
import UIKit
class ImportKeyViewController: UIViewController{
@IBOutlet weak var openWithLabel: UILabel!
@IBOutlet weak var transparentBackgroundView: UIView!
@IBOutlet weak var iCloudButton: UIButton!
@IBOutlet weak var iTunesButton: UIButton!
weak var delegate : UIDocumentPickerDelegate?
func documentPicker(_ controller: UIDocumentPickerViewController, didPickDocumentAt url: URL){
print("Entre a documentPicker")
}
func documentPickerWasCancelled(_ controller: UIDocumentPickerViewController) {
print("Sali a documentPicker")
}
override func viewDidLoad() {
super.viewDidLoad()
print("llegue")
setUpUI()
}
override func viewDidAppear(_ animated: Bool) {
super.viewDidAppear(animated)
UIView.animate(withDuration: 0.1, animations: {
self.transparentBackgroundView.backgroundColor = UIColor(red: 220/255, green: 220/255, blue: 220/255, alpha: 0.7)
})
}
override func viewWillDisappear(_ animated: Bool) {
UIView.animate(withDuration: 0.1, animations: {
self.transparentBackgroundView.backgroundColor = UIColor.clear
})
}
@IBAction func closeButtonAction(_ sender: UIButton) {
let documentPicker = UIDocumentPickerViewController (documentTypes: ["public.text","public.content"], in: .import)
documentPicker.delegate? = self.delegate!
self.present(documentPicker, animated:true, completion: nil)
}
}
У меня есть обязательные и дополнительные методы для UIDocumentPickerDelegate, но он не работает, как вы можете видеть на изображении ниже
Это мое первое приложение для iOS, надеюсь, вы мне поможете.
1 ответ
Вы должны добавить новый синтаксис didPickDocumentAt:
Метод делегата, похоже, он немного изменился.
-- редактировать
Ваш ImportKeyViewController
должен наследовать UIDocumentPickerDelegate
, Хороший способ сделать это - создать расширение, чтобы было легко заметить, какие методы являются методами-делегатами, а какие - вашими.
Вот так:
extension ImportKeyViewController: UIDocumentPickerDelegate {
func documentPicker(_ controller: UIDocumentPickerViewController, didPickDocumentAt url: URL){
print("Entre a documentPicker")
}
func documentPickerWasCancelled(_ controller: UIDocumentPickerViewController) {
print("Sali a documentPicker")
}
}