是否可以更改QLPreviewController中项目的标题?
我已经尝试过:
添加
override func viewDidAppear(_ animated: Bool) {
self.navigationController?.navigationBar.topItem?.title = "Bericht"
}
但你只看到1/4秒的标题。
有什么想法吗?
答案 0 :(得分:13)
如果您需要在网址中显示除lastPathComponent之外的其他标题,您可以继承QLPreviewItem并提供实现可选属性的标题:
实例属性声明:
var previewItemTitle: String? { get }
要为预览项目显示的标题。
如果您没有为此属性实现getter方法,或者您的 方法返回nil,QuickLook检查项目的URL或内容 正在预览以确定适合显示的标题 用户。返回此属性的非零值以提供自定义 标题。
protocol QLPreviewItem : NSObjectProtocol
描述
QLPreviewItem协议定义了您实现的属性 应用程序的内容在QuickLook预览中可见 (iOS中的QLPreviewController或macOS中的QLPreviewPanel)。方法 在此协议中也被声明为NSURL类的类别。 因此,您可以直接使用NSURL对象作为预览 items - 如果您要使用这些项的默认标题。 默认标题是项目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
}
}