我需要打开UIDocumentPickerViewController
,它应该允许用户选择所有类型的文件。即.(.pdf,.doc)文件我用的是UIDocumentPickerViewController
方法。验证码:
我的类声明中的UIDocumentPickerDelegate, UIDocumentMenuDelegate
//上传文件
func OpenFile(){
let importMenu = UIDocumentMenuViewController(documentTypes: [String(kUTTypePNG),String(kUTTypeImage)], in: .import)
importMenu.delegate = self
importMenu.modalPresentationStyle = .fullScreen
self.present(importMenu, animated: true, completion: nil)
}
@available(iOS 8.0, *)
public func documentPicker(_ controller: UIDocumentPickerViewController, didPickDocumentAt url: URL) {
let cico = url as URL
print("The Url is : \(cico)")
do {
let weatherData = try NSData(contentsOf: cico, options: NSData.ReadingOptions())
print(weatherData)
let activityItems = [weatherData]
let activityController = UIActivityViewController(activityItems: activityItems, applicationActivities: nil)
if UI_USER_INTERFACE_IDIOM() == .phone {
self.present(activityController, animated: true, completion: { _ in })
}
else {
let popup = UIPopoverController(contentViewController: activityController)
popup.present(from: CGRect(x: CGFloat(self.view.frame.size.width / 2), y: CGFloat(self.view.frame.size.height / 4), width: CGFloat(0), height: CGFloat(0)), in: self.view, permittedArrowDirections: .any, animated: true)
}
} catch {
print(error)
}
//optional, case PDF -> render
//displayPDFweb.loadRequest(NSURLRequest(url: cico) as URLRequest)
}
@available(iOS 8.0, *)
public func documentMenu(_ documentMenu: UIDocumentMenuViewController, didPickDocumentPicker documentPicker: UIDocumentPickerViewController) {
documentPicker.delegate = self
present(documentPicker, animated: true, completion: nil)
}
func documentPickerWasCancelled(_ controller: UIDocumentPickerViewController) {
print(" cancelled by user")
dismiss(animated: true, completion: nil)
}
在此代码中,应用程序将崩溃。原因是Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: 'You cannot initialize a UIDocumentPickerViewController except by the initWithDocumentTypes:inMode: and initWithURL:inMode: initializers.
我不知道如何初始化initWithDocumentTypes:inMode.
我是新的iOS任何一个帮助我?你能不能帮帮我。
4条答案
按热度按时间fumotvh31#
Swift 3*,4*,
要打开文档并选择任何文档,您使用的是
UIDocumentPickerViewController
,如果用户设备中连接了Google Drive,则会显示iCloud、文件和Google Drive中的所有文档。然后选择的文档需要下载到您的应用程序中,从那里您可以在WKWebView
中显示它,注意:如果你想选择所有的文件,你必须使用以下代码:
在你的行动方法中。
xoefb8l82#
在Swift中使用
UIDocumentPickerViewController
打开**(.pdf,.doc,.docx)**的具体文档文件:documentTypes应该是导入
import MobileCoreServices
示例:
2uluyalo3#
实际上,除了使用WebView,您还可以使用QuickLook*Framework**,该框架就是为此特定目的而设计的。您只需传递文件的位置并遵守协议。它将显示一个视图控制器,其中包含文档。
- iWork文档(页面、数字和主题演讲)
- Microsoft Office文档(只要它们是使用Office 97或任何其他更新版本创建的)
- PDF文件
-图片
-文本文件
-富文本格式文档
-逗号分隔值文件(csv)
Here是APPCODA的教程,描述了相同的内容。
和
Here是苹果OBJ-C版本提供的教程。
pw9qyyiw4#
UIDocumentPickerViewController.init(documentTypes:in:)
和kUTType___
分别在iOS 14和15中弃用。以下是如何在较新版本的iOS上实现相同的功能: