NSTableView - 初始选择灰色直到单击(聚焦)

时间:2015-11-24 12:48:09

标签: xcode swift nstableview

我有一个简单的应用程序示例,我在这里拍了一下,我得到的就是我所追求的。

问题是当视图加载时,在NSViewController的viewDidLoad中,我将tableView的选定索引设置为0,即第一个项目(有效)。

我注意到的是,当发生这种情况时,所选行会显示为灰色(即好像它不是活动的窗口/视图)...当我点击时,它似乎只有正常蓝色的高光在选定的行上。

我可以确认选择了并且一切正常。

有什么想法吗?

要确认,我用来选择行的代码是:

override func viewDidAppear() {
    self.tableView.selectRowIndexes(NSIndexSet(index: 0), byExtendingSelection: false)
}

以下是实际视图本身的情况:

enter image description here

上图:较暗的灰线是“选择栏”。只要视图变为活动状态,就会发生这种情况。

enter image description here

上图:一旦我点击那一行(曾经是深灰色的那一行),我就得到了他想要的高光照......即海军蓝。

1 个答案:

答案 0 :(得分:1)

我已经设法找出发生了什么。 (我认为)它似乎有效。

我必须:

  1. 子类NSTableRowView
  2. 在Interface Builder
  3. 中的实际单元格视图(行)下方添加新的NSView
  4. 将新的Row View的类设置为“myNSTableViewSubClass”
  5. 将行视图的标识符设置为:NSTableViewRowViewKey (这是非常具体的,字面上是关键,如果没有设置,它将无法被视为表行视图。
  6. 在子类中,我必须覆盖emphasised: Bool以始终返回yes,例如:

    override var emphasized: Bool{
        get{
            return true
        }
        set{
            //You need to have the "set" there as it's a mutable prop
            //It doesn't have to do untying though
        }
    }
    
  7. 瞧..

    我的案例中的问题是 4