我的应用程序在NSTableView中列出音频文件(MP3),每一行的对象包含音频文件的路径。我希望能够预览音频文件与快速查看(如在Finder中)时,点击空格键,而一行被选中。
通过查看相关的问题和答案,我注意到这个API似乎是私有的,所以很难找到关于它的最新可靠的信息或文档,更不用说在Swift中了。更重要的是,我找到的大多数例子都与图像预览有关,有些例子实际上提到了Xcode的"调试快速查看",这根本不是我感兴趣的。
我见过一个FTP客户端,它可以快速查看Finder可以预览的任何文件,所以我猜可以在应用程序中使用它,特别是如果文件格式是本地支持的。
谁能给我指个正确的方向?这实际上是非常简单的。所有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")
}
}
}
这有三个部分。
首先,要打开标准的Quick Look窗口,只需调用共享面板上的makeKeyAndOrderFront
。
面板知道要显示什么,因为它与通过QLPreviewPanelDataSource
实现的数据源对话。正如您在我的示例中看到的那样,它只是返回2
的计数,并且可以要求它返回实现QLPreviewItem
的对象。
对于我的演示,我只是将NSURL
实例返回到默认情况下包含在系统中的两个资源。原来NSURL
已经实现了QLPreviewItem
协议,所以没有什么额外的事情要做。
如果您想要预览的项目不容易转换为文件系统上的url(文件),那么您将需要做一个更复杂的QLPreviewItem
对象实现。
我敢打赌指向MP3文件会很好。