Ich verwende QLPreviewController zur Vorschau von Dokumenten. Aber ich weiß nicht, wie man Dokumente anzeigt, die auf einem Server gespeichert sind.So zeigen Sie das Remote-Dokument mithilfe von QLPreviewController in swift an
2
A
Antwort
5
Sie können nicht. QuickLook funktioniert nur für lokale Ressourcendateien. Sie müssten die Daten zuerst asynchron herunterladen, dann im Dokumentverzeichnis oder in einem temporären Ordner speichern und den QLPreviewController nach Abschluss des Vorgangs aus dem Hauptthread präsentieren:
import UIKit
import QuickLook
class ViewController: UIViewController, QLPreviewControllerDataSource {
let preview = QLPreviewController()
let tempURL = FileManager.default.temporaryDirectory.appendingPathComponent("quicklook.pdf")
func numberOfPreviewItems(in controller: QLPreviewController) -> Int {
return 1
}
func previewController(_ controller: QLPreviewController, previewItemAt index: Int) -> QLPreviewItem {
return tempURL as QLPreviewItem
}
override func viewDidLoad() {
super.viewDidLoad()
preview.dataSource = self
preview.currentPreviewItemIndex = 0
let url = URL(string:"https://images.apple.com/environment/pdf/Apple_Environmental_Responsibility_Report_2017.pdf")!
URLSession.shared.dataTask(with: url) { data, response, error in
guard let data = data, error == nil else {
// in case of failure to download your data you need to present alert to the user and update the UI from the main thread
DispatchQueue.main.async {
UIApplication.shared.isNetworkActivityIndicatorVisible = false
let alert = UIAlertController(title: "Alert", message: error?.localizedDescription ?? "Failed to download the pdf!!!", preferredStyle: .alert)
alert.addAction(UIAlertAction(title: "OK", style: .default))
self.present(alert, animated: true)
}
return
}
// write the downloaded data to a temporary folder or to the document directory if you want to keep the pdf for later usage
do {
try data.write(to: self.tempURL, options: .atomic) // atomic option overwrites it if needed
// you neeed to check if the downloaded data is a valid pdf
// and present your controller from the main thread
DispatchQueue.main.async {
UIApplication.shared.isNetworkActivityIndicatorVisible = false
if self.tempURL.typeIdentifier == "com.adobe.pdf" {
self.present(self.preview, animated: true)
} else {
print("the data downloaded it is not a valid pdf file")
}
}
} catch {
print(error)
return
}
}.resume()
UIApplication.shared.isNetworkActivityIndicatorVisible = true
}
}
extension URL {
var typeIdentifier: String? {
return (try? resourceValues(forKeys: [.typeIdentifierKey]))?.typeIdentifier
}
}
Verwandte Themen
- 1. So zeigen Sie Datensätze mithilfe einer Verknüpfungstabelle ordnungsgemäß an
- 2. So zeigen Sie ein UIImage in Swift an
- 3. So zeigen Sie eine Fehlermeldung mithilfe der Instafeed-Bibliothek an
- 4. So zeigen Sie einen bestimmten ViewController in OneSignal Swift an
- 5. So zeigen Sie MKSnapshot in Swift (iOS) an
- 6. So fügen Sie das Benutzer- und Adressmodell mithilfe von Entity Framework ein und zeigen es an
- 7. Wie kann ich die Freigabe-Schaltfläche in QLPreviewController mithilfe von swift ausblenden?
- 8. So zeigen Sie Tabellendaten als Benutzerbewertungen an
- 9. So zeigen Sie das Nachrichtenfenster von Android Studio an?
- 10. So erstellen Sie eine URL mithilfe von Dictionary in Swift
- 11. So zeigen Sie Daten von MySQL an
- 12. So zeigen Sie Credits an
- 13. So laden Sie Bilder mithilfe von Swift in Azure hoch
- 14. So zeigen Sie das Fragment in einem Register an Aktivität
- 15. So zeigen Sie das verpackte Element in einem Wrapper an
- 16. So zeigen Sie das Projekt in Sublime an
- 17. So zeigen Sie Benachrichtigungen in IOS an
- 18. So zeigen Sie den JSON-API-Feed mithilfe von JavaScript in einer HTML-Seite an
- 19. So aktualisieren Sie die Tabelle mithilfe von SqliteManager in swift
- 20. So zeigen Sie Sonderzeichen in HTML an
- 21. So zeigen Sie Warnmeldungen in Django an
- 22. So zeigen Sie Listenelemente in Listview an?
- 23. So zeigen Sie die Datumsauswahl an
- 24. So zeigen Sie die Größe der Parameter einer Clientanforderung in NetBeans an (mithilfe von Servlets)
- 25. So zeigen Sie die Seitenzahl (N von N) mithilfe von XSLT im PDF-Bericht an
- 26. So zeigen Sie Daten in jtree an
- 27. So zeigen Sie Klartext in ExtJs an
- 28. So zeigen Sie die Suchleiste in NSMenuItem an
- 29. So zeigen Sie Daten von App zu Today Extension Swift
- 30. Zeigen Sie ein Vorschaubild von einem Video-Swift an