QLPreviewController更改标题?
是否可以更改QLPreviewController中项目的标题?
我已经尝试过了:
- 子类化QLPreviewController
-
加
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 } }