Делегат средства выбора документов Xcode в UIKit

#ios #xcode #viewcontroller #ibaction

#iOS #xcode #viewcontroller #ibaction

Вопрос:

Почему я не могу установить для делегата значение self? Я запускаю приведенный ниже код в файле viewcontroller.swift, но я хочу вызвать его в файле Render.swift. У меня запущена металлическая сцена с видом с камеры, и я хочу открыть средство выбора файлов перед ним, но, похоже, это не очень просто.

 @IBAction func importFiles(_ sender: Any) {
    
    let documentPicker = UIDocumentPickerViewController(documentTypes: [kUTTypePlainText as String], in: .import)
    documentPicker.delegate = self
    documentPicker.allowsMultipleSelection = false
    present(documentPicker, animated: true, completion: nil)
}
 

В нем говорится, что невозможно присвоить значение типа ‘ViewController’ типу ‘UIDocumentPickerDelegate

В моем файле Renders.swift у меня есть функция, привязанная к кнопке, которая вызывает следующее:

  //open dialog for picker...
    let myVC: ViewController = ViewController()
    
    myVC.importFiles()
 

Я довольно новичок во всем этом.

Ответ №1:

Почему я не могу установить для делегата значение self?

Потому что делегат должен быть UIDocumentPickerDelegate, а self не UIDocumentPickerDelegate . Вам нужно объявить, что это:

 class ViewController : UIViewController, UIDocumentPickerDelegate {
 

Это может вызвать другие проблемы (и я ожидаю, что так и будет), но, по крайней мере, вы пройдете точку, в которой находитесь сейчас.