首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >QLPreviewController更改标题?

QLPreviewController更改标题?
EN

Stack Overflow用户
提问于 2017-03-27 20:30:31
回答 1查看 4.1K关注 0票数 14

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

我已经试过了

  1. 子类QLPreviewController
  2. 添加 覆盖func viewDidAppear(_ viewDidAppear: Bool) {viewDidAppear= "Bericht“}

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

有什么想法吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-03-27 22:47:27

如果您需要从url中显示与lastPathComponent不同的标题,则可以将QLPreviewItem子类并提供实现可选属性的自己的标题:

实例财产声明:

代码语言:javascript
复制
var previewItemTitle: String? { get }

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

代码语言:javascript
复制
 protocol QLPreviewItem : NSObjectProtocol

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

第一个子类QLPreviewItem:

代码语言:javascript
复制
import UIKit
import QuickLook
class PreviewItem: NSObject, QLPreviewItem {
    var previewItemURL: URL?
    var previewItemTitle: String?
    init(url: URL? = nil, title: String? = nil) {
        previewItemURL = url
        previewItemTitle = title
    }
}

然后在控制器中返回QLPreviewItem而不是URL:

Xcode 11·Swift 5.1

代码语言:javascript
复制
import UIKit
import QuickLook

class ViewController: UIViewController, QLPreviewControllerDelegate, QLPreviewControllerDataSource {

    var previewItems: [PreviewItem] = []

    override func viewDidLoad() {
        super.viewDidLoad()

        previewItems = [
            .init(url: Bundle.main.url(forResource: "your file 1", withExtension: "ext"),
                  title: "Custom Title 1"),
            .init(url: Bundle.main.url(forResource: "your file 2", withExtension: "ext"),
                  title: "Custom Title 2"),
        ]
    }

    override func viewDidAppear(_ animated: Bool) {
        super.viewDidAppear(animated)
        quickLook()
    }

    func numberOfPreviewItems(in controller: QLPreviewController) -> Int { previewItems.count }

    func quickLook(at index: Int = 0) {
        let controller = QLPreviewController()
        controller.delegate = self
        controller.dataSource = self
        controller.currentPreviewItemIndex = index
        present(controller, animated: true)
    }

    func previewController(_ controller: QLPreviewController, previewItemAt index: Int) -> QLPreviewItem { previewItems[index] }
}
票数 27
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43055902

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档