以编程方式折叠NSOutlineView中的组行

时间:2015-12-16 16:03:13

标签: swift2 nsoutlineview

我有一个带有操作的NSOutlineView(请参阅代码),当用户单击该行的任何位置时,该操作会折叠一行。但它不适用于团体。

有些行通过" shouldShowOutlineCellForItem"定义为组。委托方法。

我可以通过编程方式扩展组行,但不能将其折叠。有什么建议? isExpanded通过通知正确设置。

@IBAction func didClick(sender: AnyObject?)
{
    assert(self.root != nil)
    let selectedRow = outlineView.clickedRow
    let proposedItem = (selectedRow == -1) ? self.root! : outlineView.itemAtRow(selectedRow) as! thOutlineNode

    if proposedItem.isExpanded
    {
        self.outlineView.collapseItem(proposedItem)
    }
    else
    {
        self.outlineView.expandItem(proposedItem)
    }
}

1 个答案:

答案 0 :(得分:1)

可能重复。基于覆盖Objective-C的this existing SO question,尝试添加NSOutlineViewDelegate委托方法

func outlineView(_ outlineView: NSOutlineView, shouldShowOutlineCellForItem item: AnyObject) -> Bool {
    return true
}

NSOutlineView的视图控制器。从NSOutlineViewDelegate的Apple文档中,我们看到这是预期的行为:

  

可选功能outlineView(_ outlineView:NSOutlineView,   shouldShowOutlineCellForItem item:AnyObject) - >布尔

     

...

     

<强>讨论

     

返回NO导致frameOfOutlineCellAtRow:返回NSZeroRect,   隐藏细胞。此外,行不会被折叠   键盘快捷键