我有一个带有操作的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)
}
}
答案 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, 隐藏细胞。此外,行不会被折叠 键盘快捷键。