【问题标题】:swift show QLPreviewPanel快速显示 QLPreviewPanel
【发布时间】:2018-09-16 09:25:37
【问题描述】:

我想使用QLPreviewPanel 预览一些文件。

我使用情节提要添加了以下ViewController

class ViewController: NSViewController, QLPreviewPanelDataSource, QLPreviewPanelDelegate {
override func viewDidAppear() {
    super.viewDidAppear()

    self.nextResponder = MainWindowController.testinstance!.nextResponder
}

@IBAction func btn(_ sender: Any) {
    openPreview(url: URL(fileURLWithPath: "/Users/usr/Desktop/test.mp3"))
}

//preview for audio
private var previewURL : URL?
func openPreview(url: URL){
    previewURL = url
    if let sharedPanel = QLPreviewPanel.shared() {
        sharedPanel.delegate = self
        sharedPanel.dataSource = self
        sharedPanel.makeKeyAndOrderFront(nil)
    }
}

func numberOfPreviewItems(in panel: QLPreviewPanel!) -> Int {
    return 1
}

func previewPanel(_ panel: QLPreviewPanel!, previewItemAt index: Int) -> QLPreviewItem! {
    if previewURL == nil {
        return nil
    }
    return previewURL as? QLPreviewItem
}

override func acceptsPreviewPanelControl(_ panel: QLPreviewPanel!) -> Bool {
    return true
}

override func beginPreviewPanelControl(_ panel: QLPreviewPanel!) {
    panel.dataSource = self
    panel.delegate = self
}

override func endPreviewPanelControl(_ panel: QLPreviewPanel!) {
    panel.dataSource = nil
    panel.delegate = nil
}}

一切正常 - 但我得到了错误 [QL] QLError(): -[QLPreviewPanel setDelegate:] called while the panel has no controller - Fix this or this will raise soon. See comments in QLPreviewPanel.h for -acceptsPreviewPanelControl:/-beginPreviewPanelControl:/-endPreviewPanelControl:.

我该如何解决?还是忽略该错误可以节省?

【问题讨论】:

标签: swift macos preview


【解决方案1】:

声明QLPreviewController,然后尝试显示项目。

这里是使用QLPreviewController查看和打开文件的示例

Example of QLPreviewController

【讨论】:

  • 与 iOS 无关的问题
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多