Reputation: 81
Xcode 8.3.2 I don't find QLPreviewPanel in the command list and I don't know how to do (which command must be used) to display a file preview in a ViewController.
Upvotes: 4
Views: 2595
Reputation: 2178
Sadly Apples QuickLookDownloader Demo uses Obj-C. I've created a Swift Versiob which is basically the implementation of @Leo Dabus answer in a Demo Project: Panel and Popover example
Upvotes: 0
Reputation: 236360
First of all you will need to add the import Quartz
statement to your NSViewCOntroller
. Second step is to add QLPreviewPanelDataSource, QLPreviewPanelDelegate
to its declaration. Next you just need to get a reference of the shared QLPreviewPanel, make the view controller its dataSource
and delegate
and make its window key and order front.
You will need also to add numberOfPreviewItems and previewItemAt methods to your controller. You can do it as follow:
import Quartz
class ViewController: NSViewController, QLPreviewPanelDataSource, QLPreviewPanelDelegate {
@IBAction func button(_ sender: NSButton) {
if let sharedPanel = QLPreviewPanel.shared() {
sharedPanel.delegate = self
sharedPanel.dataSource = self
sharedPanel.makeKeyAndOrderFront(self)
}
}
func numberOfPreviewItems(in panel: QLPreviewPanel!) -> Int {
return 1
}
func previewPanel(_ panel: QLPreviewPanel!, previewItemAt index: Int) -> QLPreviewItem! {
let url = FileManager.default.urls(for: .documentDirectory, in: .userDomainMask).first!.appendingPathComponent("yourImageAtTheDocs.png")
return url as QLPreviewItem
}
}
Upvotes: 6