1

斯威夫特 4,macOS 10.13

我有一个NSOutlineView,并且我正在尝试在用户单击它时自定义每一行的外观。

我有一个NSTableCellView用于单元格的基于视图的子类。当我覆盖backgroundStyle时,图标更改完美。但是文本颜色正在做一些奇怪的事情。

这是一个演示视频: http: //d.pr/v/suTD8B

这是我的代码:

class MenuItemCell: NSTableCellView{
  @IBOutlet weak var label: NSTextField!
  @IBOutlet weak var icon: NSImageView!

  //Customizes the selected state of menu row
  override var backgroundStyle: NSView.BackgroundStyle {
    set{
      if let rowView = self.superview as? NSTableRowView {
        super.backgroundStyle = rowView.isSelected ? .dark : .light
      }
      if self.backgroundStyle == .dark {
        label.textColor = NSColor.white
        icon.image = NSImage(named: NSImage.Name(rawValue: "menu-project-selected"))
      }else{
        label.textColor = NSColor.menuTextColor
        icon.image = NSImage(named: NSImage.Name(rawValue: "menu-project"))
      }
    }
    get{ return super.backgroundStyle }
  }
}

知道有什么问题吗?我一直在寻找几个小时,无法弄清楚。

4

1 回答 1

0

事实证明,在情节提要编辑器中将NSOutlineView Highlight设置为Source List时,这永远不会可靠地工作。这真的很不可靠。

一旦我将其更改为常规,它就可以正常工作。

在此处输入图像描述 在此处输入图像描述

于 2017-11-01T15:17:35.967 回答