如何使用QLPreviewController打开并查看从Web服务获取的文档文件的URL。打开并查看文档文件URL
1
A
回答
0
你不能这样做。文档可以很好地解释这一点,但是,您想尝试制作自己的查看器。祝你好运!
参见:
您可以作为网站显示:“创建和配置文档交互控制器”
- (UIDocumentInteractionController *) setupControllerWithURL: (NSURL) fileURL
usingDelegate: (id <UIDocumentInteractionControllerDelegate>) interactionDelegate {
UIDocumentInteractionController *interactionController =
[UIDocumentInteractionController interactionControllerWithURL: fileURL];
interactionController.delegate = interactionDelegate;
return interactionController;}
“一旦你有一个文档交互控制器,你可以使用其属性获取关于相关文件的信息,包括其名称,类型和URL。“
0
- 显示某种进度微调。
- 使用
URLSession
和URLSessionDownloadTask
将文件下载到您的~/documents
文件夹。 - 隐藏进度微调器。
- 然后,您需要创建一个实现
QLPreviewControllerDataSource
并保存文档的类的实例。 隐藏进度微调和现在
QLPreviewController
import UIKit import QuickLook class Document: NSObject, QLPreviewItem { var previewItemURL: URL? } class PreviewDataSource: NSObject, QLPreviewControllerDataSource { var document: Document? func numberOfPreviewItems(in controller: QLPreviewController) -> Int { return document != nil ? 1 : 0 } func previewController(_ controller: QLPreviewController, previewItemAt index: Int) -> QLPreviewItem { return document! } } class ProgressLoadingViewController: UIViewController { var session: URLSession = URLSession(configuration: URLSessionConfiguration.default) var downloadTask: URLSessionDownloadTask? var dataSource: PreviewDataSource? override func viewDidLoad() { super.viewDidLoad() startDownload() } func startDownload() { // start progres spinner downloadTask = session.downloadTask(with: URL(string: "http://che.org.il/wp-content/uploads/2016/12/pdf-sample.pdf")!) { [weak self] (downloadLocation, response, error) in guard // check if download went correctly error != nil, let filename = response?.suggestedFilename, let downloadLocation = downloadLocation else { print("Something went wrong: \(error!)") return } // copy file let fileManager = FileManager.default let targetPath = URL(fileURLWithPath: filename, relativeTo: fileManager.temporaryDirectory) do { try fileManager.copyItem(at: downloadLocation, to: targetPath) } catch let fileError { print("Copying failed: \(fileError)") return } // prepare preview let document = Document() document.previewItemURL = targetPath self?.dataSource? = PreviewDataSource() self?.dataSource?.document = document let qlViewController = QLPreviewController() qlViewController.dataSource = self?.dataSource // hide progress spinner self?.present(qlViewController, animated: true) { self?.downloadTask = nil qlViewController.reloadData() } } downloadTask?.resume() } }
当然这漫长完成函数应该分成几个,然后搬到了自己的类DocumentDownloadManager
。
+0
你能回答我的目标C吗? @orkoden – monali
相关问题
- 1. 打开RTF文件并查看源
- 2. 查看Word文档是否打开
- 3. 使用Google文档查看器打开文档(.doc,.pdf) - C#
- 4. 打开并查看和/或编辑检查21图像文件
- 5. 打开apache2查看静态文件
- 6. 打开文件,图像查看
- 7. 如何查看/打开此文件?
- 8. 打开Excel xlsx文件进行查看
- 9. 文档查看器控件?
- 10. 文档查看器控件
- 11. Google文档查看器外部URL
- 12. Eclipse插件打开文档
- 13. Codeigniter,打开并编辑网页上的查看文件
- 14. 如何打开并查看Excel文件的XML结构?
- 15. 打印文档和滚动查看器
- 16. android打开url的文件
- 17. 从Qt URL打开文件
- 18. 我可以打开Cookie文件并查看该文件中的内容吗?
- 19. 模拟输入并按下只要我打开Word文档时打开文档
- 20. 查看文档TKinter
- 21. 用Google Docs打开文档文件,Asp.Net
- 22. 从Android上的文档打开文件
- 23. Webservice从App_Data文件夹打开文档
- 24. .csv文件打开为HTML文档
- 25. 打开文件夹中的docx文档
- 26. 使用XPS查看器打开FlowDocument作为XPS文档保存?
- 27. 打开/查看Android外部SD文件和文件夹
- 28. 打开'新'文档?
- 29. 打开Word文档
- 30. silverlight打开文档
当然,你可以做到这一点。这很简单。 – orkoden
是的,但创建你自己的脚本。没有资源明确的语言。 –
查看我的回答以上https://stackoverflow.com/a/46451323/1329214 – orkoden