我的应用程序在NSTableView中列出音频文件(MP3),每行的对象包含音频文件的路径。我希望能够在选择一行时按空格键时使用快速查看(如在Finder中)预览音频文件。
通过查看相关问题和答案,我注意到API似乎是私有的,因此很难找到有关此问题的最新可靠信息或文档,更不用说在Swift中了。更重要的是,我发现大多数与图像预览相关的示例,有些实际上提到了#34;调试快速查看" Xcode,这根本不是我感兴趣的。
我见过一个FTP客户端为Finder可以预览的任何文件执行Quick Look预览,因此我猜测它可以在一个应用程序中使用它,特别是如果文件格式是原生支持。
有人能指出我正确的方向吗?
答案 0 :(得分:4)
事实证明这很简单。所有API都是公开的。我确实认为使用 OS X 10.10 可以使事情变得更简单,但是可能没有很好的记录?
以下是一个ViewController的示例,该按钮具有一个触发标准快速查看面板的按钮,其中包含两个可在文件系统上找到的项目。
class ViewController: NSViewController {
@IBAction func showQuickLookPanel(sender: AnyObject) {
if let panel = QLPreviewPanel.sharedPreviewPanel() {
panel.dataSource = self
panel.makeKeyAndOrderFront(self)
}
}
}
extension ViewController: QLPreviewPanelDataSource {
func numberOfPreviewItemsInPreviewPanel(panel: QLPreviewPanel!) -> Int {
return 2
}
func previewPanel(panel: QLPreviewPanel!, previewItemAtIndex index: Int) -> QLPreviewItem! {
if index == 0 {
return NSURL(fileURLWithPath: "/Library/Desktop Pictures/Beach.jpg")
} else {
return NSURL(fileURLWithPath: "/System/Library/Compositions/Rollercoaster.mov")
}
}
}
这有三个部分。
首先,要打开标准的快速浏览窗口,只需在共享面板上调用makeKeyAndOrderFront
即可。
小组知道要显示什么,因为它与它的数据源进行对话,该数据源是通过QLPreviewPanelDataSource
实现的。正如您在我的示例中所看到的,它只返回2
的计数,并且可以要求它返回实现QLPreviewItem
的对象。
对于我的演示,我只是简单地将NSURL
个实例返回给系统中包含的两个资源。事实证明NSURL
已经实现了QLPreviewItem
协议,所以没有什么可以做的。
如果您要预览的项目不能轻易转换为文件系统上的URL(文件),那么您需要对QLPreviewItem
对象执行更复杂的实现。
我敢打赌,指向MP3文件的工作正常。