3

I want to preview some files using a QLPreviewPanel.

I've included the following ViewController using a Storyboard

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
}}

Everything works fine - but i get the error [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:.

How do I solve that? Or is it save to just ignore that error?

Florian Leitner
  • 172
  • 1
  • 9

1 Answers1

-3

Declare a QLPreviewController and then try to show items.

Here is an example for viewing and opening files with QLPreviewController

Example of QLPreviewController

Mahdi
  • 31
  • 1
  • 5