📅  最后修改于: 2023-12-03 15:23:48.764000             🧑  作者: Mango
在 iOS 的应用中,有时需要让用户选择某个 PDF 文件并进行操作。本文介绍如何使用 Swift 编程语言从 iOS 文件管理器中获取所选 PDF 文档的路径。
首先,在你的项目中创建一个名为 FilePicker.swift
的文件,并在其中添加以下代码:
import UIKit
import MobileCoreServices
class FilePicker: NSObject, UIDocumentPickerDelegate {
var viewController: UIViewController?
var completion: ((URL?) -> Void)?
func pickDocument(_ viewController: UIViewController, completion: @escaping (URL?) -> Void) {
self.viewController = viewController
self.completion = completion
let types = [String(kUTTypePDF)]
let documentPicker = UIDocumentPickerViewController(documentTypes: types, in: .import)
documentPicker.delegate = self
documentPicker.modalPresentationStyle = .formSheet
viewController.present(documentPicker, animated: true, completion: nil)
}
func documentPicker(_ controller: UIDocumentPickerViewController, didPickDocumentsAt urls: [URL]) {
guard let url = urls.first else { return }
self.completion?(url)
}
func documentPickerWasCancelled(_ controller: UIDocumentPickerViewController) {
self.completion?(nil)
}
}
代码中,我们创建了一个名为 FilePicker
的类。该类实现 UIDocumentPickerDelegate
协议,用于处理从文件管理器中选择的文档。
在 pickDocument
方法中,我们创建一个 UIDocumentPickerViewController
,用于打开文件管理器并让用户选择文档。在打开文件管理器时,我们仅显示 PDF 文档,以限制用户的选择范围。
在 documentPicker
方法中,我们获取用户选择的第一个文档,并将其路径传递给回调函数 completion
中。如果用户取消了选择文档操作,则调用 completion
并将其设为 nil
。
现在,我们可以在我们应用的任何地方使用 FilePicker
,如下所示:
let filePicker = FilePicker()
filePicker.pickDocument(self) { url in
guard let fileURL = url else { return }
print(fileURL.path)
// TODO: 对所选的 PDF 文件进行操作
}
在上面的代码中,我们创建了 FilePicker
的实例,并在其中调用 pickDocument
方法。当用户选择完 PDF 文件后,我们获取所选文档的路径,并使用 print
函数将其打印出来。
此时,我们便可以在所选择的 PDF 文件上进行任何操作了。
参考链接: