быстрое шоу QLPreviewPanel - PullRequest
       7

быстрое шоу QLPreviewPanel

0 голосов
/ 16 сентября 2018

Я хочу просмотреть некоторые файлы, используя 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:.

Как мне это решить? Или это просто сохранить эту ошибку?

1 Ответ

0 голосов
/ 16 сентября 2018

Объявите QLPreviewController и затем попытайтесь показать элементы.

Вот пример для просмотра и открытия файлов с QLPreviewController

Пример QLPreviewController

...