首页 > 解决方案 > macOS Swift QuickLook 警告:在面板没有控制器时调用 setDelegate 和 setDataSource

问题描述

Xcode 11,斯威夫特 5.1

每次打开文件并使用 QuickLook (QL) 查看时,都会收到一些警告。它似乎工作正常,但我想知道我是否可以摆脱警告。

警告说:

- [QLPreviewPanel setDelegate:] 在面板没有控制器时调用 - 修复此问题,否则此问题将很快引发。

- [QLPreviewPanel setDataSource:] 在面板没有控制器时调用 - 修复此问题,否则此问题将很快引发。

我在这样的设备上设置和使用 QL NSTableCellView

import Quartz

class AttachmentCell: NSTableCellView, QLPreviewPanelDataSource, QLPreviewPanelDelegate{
  var quickLookItem:URL!

  @IBAction func clickPreview(_ sender: Any) {
    guard let panel = QLPreviewPanel.shared() else{ return }
    panel.delegate = self
    panel.dataSource = self
    panel.makeKeyAndOrderFront(self)
  }
  
  func numberOfPreviewItems(in panel: QLPreviewPanel!) -> Int {
    return 1
  }

  func previewPanel(_ panel: QLPreviewPanel!, previewItemAt index: Int) -> QLPreviewItem! {
    quickLookItem = URL(fileURLWithPath: "...").appendingPathExtension(...)
    return quickLookItem as QLPreviewItem
  }
}

clickPreview方法NSButton在我的表格单元格中。我能找到的最接近的是这个,但我看不出响应者链是如何参与的:QLPreviewPanel in tableview with issue: "has no controller"

我也尝试设置我的委托方法NSViewController,但出现了相同的警告。

任何想法如何解决这个问题?或者我可以放心地忽略它吗?

标签: swiftcocoaappkitquicklook

解决方案


推荐阅读