Method is deprecated from iOS 14, so need support for both iOS 14 and later. And iOS 13 and earlier.
Method is deprecated from iOS 14, so need support for both iOS 14 and later. And iOS 13 and earlier.
Here is the complete code written in Swift 5 to support earlier version of iOS 14 and later
This method is deprecated from iOS 14
public init(documentTypes allowedUTIs: [String], in mode: UIDocumentPickerMode)
Write this code in your button action
@IBAction func importItemFromFiles(sender: UIBarButtonItem) {
var documentPicker: UIDocumentPickerViewController!
if #available(iOS 14, *) {
// iOS 14 & later
let supportedTypes: [UTType] = [UTType.image]
documentPicker = UIDocumentPickerViewController(forOpeningContentTypes: supportedTypes)
} else {
// iOS 13 or older code
let supportedTypes: [String] = [kUTTypeImage as String]
documentPicker = UIDocumentPickerViewController(documentTypes: supportedTypes, in: .import)
}
documentPicker.delegate = self
documentPicker.allowsMultipleSelection = true
documentPicker.modalPresentationStyle = .formSheet
self.present(documentPicker, animated: true)
}
Implement Delegates
// MARK: - UIDocumentPickerDelegate Methods
extension MyViewController: UIDocumentPickerDelegate {
func documentPicker(_ controller: UIDocumentPickerViewController, didPickDocumentsAt urls: [URL]) {
for url in urls {
// Start accessing a security-scoped resource.
guard url.startAccessingSecurityScopedResource() else {
// Handle the failure here.
return
}
do {
let data = try Data.init(contentsOf: url)
// You will have data of the selected file
}
catch {
print(error.localizedDescription)
}
// Make sure you release the security-scoped resource when you finish.
defer { url.stopAccessingSecurityScopedResource() }
}
}
func documentPickerWasCancelled(_ controller: UIDocumentPickerViewController) {
controller.dismiss(animated: true, completion: nil)
}
}