2017-03-27 10 views
5

Ist es möglich, den Titel eines Elements in einem QLPreviewController zu ändern?QLPreviewController Titel ändern?

habe ich schon versucht, mit:

  1. Subclassing QLPreviewController
  2. override func viewDidAppear(_ animated: Bool) { 
        self.navigationController?.navigationBar.topItem?.title = "Bericht" 
    } 
    

hinzufügen Aber sehen Sie den Titel nur vielleicht 1/4 Sekunde.

Irgendwelche Ideen?

+0

Wie kann ich die URL umbenennen, ohne die Datei zu umbenennen? – derdida

Antwort

5

Wenn Sie einen anderen Titel anders als die lastPathComponent von Ihrer URL angezeigt werden müssen, können Sie QLPreviewItem Unterklasse und einen eigenen Titel bieten die optionale Eigenschaft Implementierung:

Instanz Eigentum Erklärung:

var previewItemTitle: String? { get } 

Der Titel, der für das Vorschauelement angezeigt werden soll.

Wenn Sie nicht über eine Getter-Methode für diese Eigenschaft implementieren, oder wenn Ihre Methode gibt nil zurück, untersucht Info die URL oder Inhalt des Elements angesehen wird, um einen passenden Titel für die Anzeige auf den Benutzer zu bestimmen. Geben Sie einen Nicht-Null-Wert für diese Eigenschaft zurück, um einen benutzerdefinierten Titel bereitzustellen.


protocol QLPreviewItem : NSObjectProtocol 

Beschreibung

Das QLPreviewItem Protokoll definiert Eigenschaften, die Sie implementieren, um Ihre Anwendung Inhalt sichtbar in einer Info Vorschau (QLPreviewController in iOS oder QLPreviewPanel in macOS) zu machen. Die Methoden in diesem Protokoll werden auch als Kategorie in der NSURL-Klasse deklariert. Als Ergebnis können Sie NSURL-Objekte direkt als Vorschau Elemente verwenden - sofern Sie die Standardtitel dieser Elemente verwenden möchten. Ein Standardtitel ist die letzte Pfadkomponente der URL eines Elements. Wenn Sie Ihre eigenen Vorschau Artikel Titel liefern möchten, erstellen Sie Ihre eigene Vorschau Artikel Objekte, die dieses Protokoll übernehmen.

Erste-Subklassen QLPreviewItem:

import UIKit 
import QuickLook 
class PreviewItem: NSObject, QLPreviewItem { 
    var previewItemURL: URL? 
    var previewItemTitle: String? 
} 

Dann in Ihrem Controller zurückgeben Sie die QLPreviewItem statt der URL:

import UIKit 
import QuickLook 

class ViewController: UIViewController, QLPreviewControllerDelegate, QLPreviewControllerDataSource { 
    let item = PreviewItem() 
    override func viewDidLoad() { 
     super.viewDidLoad() 
     item.previewItemTitle = "Custom Title" 
     item.previewItemURL = Bundle.main.url(forResource: "your file", withExtension: "ext") 
    } 
    override func viewDidAppear(_ animated: Bool) { 
     super.viewDidAppear(animated) 
     quickLook() 
    } 
    func numberOfPreviewItems(in controller: QLPreviewController) -> Int { 
     return 1 
    } 
    func quickLook() { 
     let preview = QLPreviewController() 
     preview.delegate = self 
     preview.dataSource = self 
     preview.currentPreviewItemIndex = 0 
     present(preview, animated: true) 
    } 
    func previewController(_ controller: QLPreviewController, previewItemAt index: Int) -> QLPreviewItem { 
     return item 
    } 
}