2017-03-27 4 views
5

QLPreviewControllerでアイテムのタイトルを変更することはできますか?私はすでにして試したQLPreviewControllerタイトルを変更しますか?

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

を追加しかし、あなたは唯一の多分1/4秒のタイトルを参照してください。

アイデア?

+0

どのように私は、ファイルの名前を変更せずに、URLの名前を変更することができますか? – derdida

答えて

5

あなたのURLからlastPathComponent以外の別のタイトルを表示する必要がある場合は、あなたがQLPreviewItemのサブクラスを作成し、オプションのプロパティを実装する独自のタイトルを提供することができます。

インスタンスプロパティの宣言:

var previewItemTitle: String? { get } 

プレビューアイテムとして表示するタイトル。

あなたがこのプロパティのゲッターメソッドを実装していない場合、またはあなたの メソッドがnilを返した場合、クイックルックは が ユーザーへの表示に適したタイトルを決定するためにプレビューされている項目のURLや内容を調べます。カスタムの タイトルを提供するために、このプロパティのためにnil以外の値を返します。


protocol QLPreviewItem : NSObjectProtocol 

説明

QLPreviewItemプロトコルは(MacOSの中のiOSやQLPreviewPanelにQLPreviewController)あなたはQuickLookのプレビュー であなたの アプリケーションのコンテンツが表示されるように実装するプロパティを定義します。このプロトコルの メソッドも、NSURLクラスのカテゴリとして宣言されています。 その結果、プレビュー アイテムとしてNSURLオブジェクトを直接使用することができます。ただし、これらのアイテムのデフォルトのタイトルを使用する必要があります。 デフォルトのタイトルは、アイテムのURLの最後のパスコンポーネントです。 あなた自身のプレビューアイテムタイトルを提供したい場合は、このプロトコルを採用する独自のプレビュー アイテムオブジェクトを作成します。

まずサブクラスQLPreviewItem:

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

は、その後、あなたのコントローラであなたの代わりにURLのQLPreviewItemを返す:

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 
    } 
} 
関連する問題