[英]How do I access an ImageView within an NSTableCellView in Swift?
我正在嘗試使用已在數組(標志)中定義的圖像以編程方式填充列的單元格。
在 IB 中,我在表格單元格視圖中直接有一個圖像視圖。 在 ViewController 這就是我在做什么:
public func tableView(_ tableView: NSTableView, viewFor tableColumn: NSTableColumn?, row: Int) -> NSView? {
guard let cellView = tableView.makeView(withIdentifier: tableColumn!.identifier, owner: self) as? NSTableCellView else { return nil }
if tableColumn?.title == "flag" {
cellView.imageView?.image = NSImage(named: flags[row]) // NOT WORKING
} else if tableColumn?.title == "country" {
cellView.textField?.stringValue = flags[row].uppercased()
}
return cellView
}
這導致“國家/地區”列中的文本字段單元格設置得很好,但“標志”列中的每個單元格都具有我在 IB 中設置的默認圖像——或者如果我將其刪除,則什么都沒有。
根據我瀏覽過的教程和 StackOverflow 帖子,似乎我做的一切都是正確的——但顯然我搞砸了一些事情。
(回應評論中分享的截屏)
請注意圖像視圖(在單元格中)沒有被任何內容引用(其右側的“引用插座”部分為空)。
您的圖像視圖是其單元格的子視圖(如其在左側欄上的視圖層次結構中的位置所示),因此您大概可以使用以下內容訪問它:
let imageView = cell.subViews.first(where: { $0 is NSImageView }) as! NSImageView
imageView.image = NSImage(named: flags[row])
……但這顯然很笨拙。
相反,您應該選擇您的單元格,然后從其imageView
出口拖到 Image View。 這將創建一個新的引用,這將使cell.imageView
非零。
或者,我建議您刪除單元格,然后從“對象庫”的“圖像和測試表單元格視圖”創建一個新單元格。 它已經連接了所有的插座。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.