С помощью UIImagePickerController мы можем получить доступ и загрузить изображения. Как получить доступ и загрузить документы с iphone?
Я разрабатываю приложение, связанное с кредитом, в котором пользователь загружает свои документы, такие как платежные ведомости, возвратные документы и т. Д. Для этого я должен показать пользователю все документы, которые он / она имеет на своем iPhone. Как показать сборщик для документов?
3 ответа
UIDocumentPickerViewController
это то, что вы ищете.
Вы инициируете один со списком типов документов, которые вы хотите иметь возможность выбрать, и режим, который обычно .open
получить доступ к файлу в облачном провайдере напрямую. Вы также можете использовать .import
который скопирует файл в ваш контейнер, а не предоставит вам доступ к файлу непосредственно в контейнере провайдера облака, если целью является просто загрузить его (вы можете удалить копию после загрузки).
Как только вы создали свой сборщик, вы представляете его и реализуете метод делегата didPickDocumentsAt
получить список файлов, выбранных пользователем.
Ознакомьтесь с примером кода Particles и сессией WWDC этого года " Управление документами в приложениях iOS "
Просто вызовите метод openDocumentPicker, когда вы хотите загрузить документ в приложение.
import MobileCoreServices
func openDocumentPicker() {
let importMenu = UIDocumentMenuViewController(documentTypes: [kUTTypePDF as String], in: .import)
importMenu.delegate = self
self.present(importMenu, animated: true, completion: nil)
}
создайте свое расширение viewcontroller
extension ViewController: UIDocumentMenuDelegate {
func documentMenu(_ documentMenu: UIDocumentMenuViewController, didPickDocumentPicker documentPicker: UIDocumentPickerViewController) {
documentPicker.delegate = self
present(documentPicker, animated: true, completion: nil)
}
func documentMenuWasCancelled(_ documentMenu: UIDocumentMenuViewController) {
print("we cancelled")
dismiss(animated: true, completion: nil)
}
}
extension ViewController: UIDocumentPickerDelegate {
internal func documentPicker(_ controller: UIDocumentPickerViewController, didPickDocumentAt url: URL) {
do {
let fileAttributes = try FileManager.default.attributesOfItem(atPath: url.path)
let fileSizeNumber = fileAttributes[FileAttributeKey.size] as! NSNumber
let fileSizea = fileSizeNumber.doubleValue
let fileSize = fileSizea/1000000.0
if fileSize > 5.0 {
appDelegate.displayAlert(Title: "", Message: "Selected File are too big,Please select file less than 5.0 mb")
} else {
let documentData = try Data(contentsOf: url, options: .dataReadingMapped)
}
} catch let error {
print(error.localizedDescription)
}
}
}
выше этого кода только вы можете получить доступ к PDF, если вы хотите получить доступ к другому документу, чем просто использовать этот код
/*
let pdf = String(kUTTypePDF)
let spreadsheet = String(kUTTypeSpreadsheet)
let movie = String(kUTTypeMovie)
let aviMovie = String(kUTTypeAVIMovie)
let docs = String(kUTTypeCompositeContent)
let img = String(kUTTypeImage)
let png = String(kUTTypePNG)
let jpeg = String(kUTTypeJPEG)
let txt = String(kUTTypeText)
let zip = String(kUTTypeZipArchive)
let msg1 = String(kUTTypeEmailMessage)
let msg2 = String(kUTTypeMessage)
let types = [pdf, spreadsheet, movie, aviMovie, img, png, jpeg, txt, docs, zip, msg1, msg2]
*/
iOS 11 или более поздняя версия
let importMenu = UIDocumentPickerViewController.init(documentTypes: ["public.item"], in: UIDocumentPickerMode.import)
self.present(importMenu, animated: true) {
}
Пожалуйста, перейдите по следующей ссылке для более подробного описания https://www.techotopia.com/index.php/An_iOS_Document_Browser_Tutorial
iOS 10 или более ранняя версия Вы можете написать следующую функцию, когда откроется окно выбора документов. это будет работать для всех типов файлов, которые вы хотите загрузить.
func openDocumentPicker() {
let importMenu = UIDocumentMenuViewController(documentTypes: ["public.item"], in: .import)
importMenu.delegate = self
importMenu.modalPresentationStyle = .formSheet
self.present(importMenu, animated: true, completion: nil)
}