QLPreviewController更改标题?

是否可以更改QLPreviewController中项目的标题?

我已经尝试过了:

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

但你看到的标题只有1/4秒。

有任何想法吗?

如果需要在url中显示除lastPathComponent之外的其他标题,则可以inheritanceQLPreviewItem并提供实现可选属性的标题:

实例财产声明:

 var previewItemTitle: String? { get } 

要为预览项目显示的标题。

如果您没有为此属性实现getter方法,或者您的方法返回nil,则QuickLook会检查正在预览的项目的URL或内容,以确定要显示给用户的相应标题。 返回此属性的非零值以提供自定义标题。


  protocol QLPreviewItem : NSObjectProtocol 

描述

QLPreviewItem协议定义了您实现的属性,以使您的应用程序的内容在QuickLook预览中可见(iOS中的QLPreviewController或macOS中的QLPreviewPanel)。 此协议中的方法也在NSURL类中声明为类别。 因此,您可以直接将NSURL对象用作预览项 – 前提是您要使用这些项的默认标题。 默认标题是项目URL的最后一个路径组件。 如果要提供自己的预览项目标题,请创建自己的采用此协议的预览项目对象。

第一个子类QLPreviewItem:

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

然后在您的控制器中返回QLPreviewItem而不是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 } }