NSOutlineView选定的文本颜色在Swift中不起作用

时间:2017-10-20 18:53:59

标签: nsoutlineview nstablecellview

Swift 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 }
  }
}

知道什么是错的吗?我一直在寻找几个小时,无法弄明白。

1 个答案:

答案 0 :(得分:0)

事实证明,当在Storyboard编辑器中将NSOutlineView 突出显示设置为源列表时,这将无法可靠地运行。这真是不可靠。

我将其更改为常规,然后就可以了。

enter image description here enter image description here