在swift中实现文档选择器(iOS)

我想在我的iOS应用程序中选择任何类型的文件(.pdf,.docs,.xlsx,.jpeg,.txt,.rtf等)。 点击上传按钮,我希望我的应用程序打开一个目录并选择文件( DocumentsPicker

 @IBAction pickDocument(sender: UIButton) { //Open Document Picker } 

Swift这样做的任何方法?

根据项目的function,启用iCloudKey-Sharing

在此处输入图像描述

在您的类中导入MobileCoreServices ,最后在UIViewController中扩展以下三个类:

 UIDocumentMenuDelegate,UIDocumentPickerDelegate,UINavigationControllerDelegate 

实现以下function:

  public func documentPicker(_ controller: UIDocumentPickerViewController, didPickDocumentAt url: URL) { let myURL = url as URL print("import result : \(myURL)") } public func documentMenu(_ documentMenu:UIDocumentMenuViewController, didPickDocumentPicker documentPicker: UIDocumentPickerViewController) { documentPicker.delegate = self present(documentPicker, animated: true, completion: nil) } func documentPickerWasCancelled(_ controller: UIDocumentPickerViewController) { print("view was cancelled") dismiss(animated: true, completion: nil) } 

怎么称呼这一切? 将以下位代码添加到您的单击function中..

 func clickFunction(){ let importMenu = UIDocumentMenuViewController(documentTypes: [String(kUTTypePDF)], in: .import) importMenu.delegate = self importMenu.modalPresentationStyle = .formSheet self.present(importMenu, animated: true, completion: nil) } 

单击您的按钮。 将弹出以下菜单..

MenuPicker

在DropBox的情况下。 点击任何项目。 您将被重定向回您的应用程序,URL将记录在您的终端中。

在此处输入图像描述

根据需要操作documentTypes。 在我的应用程序中,用户只允许使用Pdf。 所以,适合自己。

kUTTypePDF kUTTypePNG kUTTypeJPEG

此外,如果您想要自定义自己的菜单栏。 添加以下代码并在处理程序中自定义您自己的函数

  importMenu.addOption(withTitle: "Create New Document", image: nil, order: .first, handler: { print("New Doc Requested") }) 

在此处输入图像描述

好好享受。

您可以使用UIDocumentPickerViewController从Files apps或iCloud Drive中获取文件。

  1. iCloudfunction激活Key-value storageiCloud Documents

在此处输入图像描述

  1. 在要打开文档选择器的视图控制器上导入以下框架:

     import MobileCoreServices 
  2. UIDocumentPickerDelegate实现以下方法:

     func documentPicker(_ controller: UIDocumentPickerViewController, didPickDocumentsAt urls: [URL]) { // you get from the urls parameter the urls from the files selected } 
  3. 创建一个UIDocumentPickerViewController以显示File UIDocumentPickerViewController或iCloud Drive:

     let types: NSArray = NSArray(object: kUTTypePDF as NSString) let documentPicker = UIDocumentPickerViewController(documentTypes: types as! [String], in: .import) documentPicker.delegate = self documentPicker.modalPresentationStyle = .formSheet self.present(documentPicker, animated: true, completion: nil) 

    如果您希望用户可以向您的应用程序导入更多类型的文件,则必须向NSArray types添加更多UTType 。 要查看所有可用类型,您可以查看UTType文档

当文档选择器在iOS 11上打开并且您尝试在Google云端硬盘中选择一个文件时,由于存在错误,该文件可能会被禁用: http : //www.openradar.me/24187873

您可以使用NSURLSession实现您描述的NSURLSession

您必须将显示的目标目录限制在应用程序的文档目录中。 应用程序无法完全访问文件系统。

这将有助于您实现下载/上传function

 UIDocumentMenuViewController *importMenu = [[UIDocumentMenuViewController alloc] initWithDocumentTypes:@[@"public.item"] inMode:UIDocumentPickerModeImport | UIDocumentPickerModeExportToService]; 

有关更多阅读Apple文档

Interesting Posts