SwiftUI UIDocumentPickerViewControllerを使用する
SwiftUIでUIDocumentPickerViewControllerを使用する
Point
- final classにする
- NSObjectをベースに入れる
import SwiftUI import UIKit import UniformTypeIdentifiers final class UIDocumentPickerViewControllerView: NSObject, UIViewControllerRepresentable { func makeUIViewController(context: Context) -> UIDocumentPickerViewController { let documentPicker = UIDocumentPickerViewController(forOpeningContentTypes: [UTType.jpeg, UTType.png]) documentPicker.delegate = self return documentPicker } func updateUIViewController(_ controller: UIDocumentPickerViewController, context: Context) { print(#function) } } extension UIDocumentPickerViewControllerView: UIDocumentPickerDelegate { func documentPicker(_ controller: UIDocumentPickerViewController, didPickDocumentsAt urls: [URL]) { guard urls.count != 0 else { return } print(#function) print(urls.debugDescription) } }
使用する側Example
: : } .sheet(isPresented: self.$onDocumentPicker, onDismiss: {}, content: { UIDocumentPickerViewControllerView() })