swift - 隐藏 NSOutlineView 中组行的显示/隐藏按钮
问题描述
我的 NSOutlineView 有一些不能折叠的组行,类似于 Mail.app 无法隐藏“邮箱”组。shouldCollapseItem
如果委托的方法返回,我希望显示/隐藏悬停按钮被禁用false
,但情况似乎并非如此。
我尝试使用以下委托手动禁用它:
func outlineView(_ outlineView: NSOutlineView, willDisplayOutlineCell cell: Any, for tableColumn: NSTableColumn?, item: Any) {
if outlineView.delegate?.outlineView?(outlineView, shouldCollapseItem: item) == false {
if let view = outlineView.delegate?.outlineView?(outlineView, viewFor: tableColumn, item: item) {
if let button = view.subviews.first(where: { $0.identifier == NSOutlineView.showHideButtonIdentifier }) {
button.isHidden = true
}
}
}
}
但这不起作用,因为返回的视图只是NSTableCellView
将要呈现的视图,并且在调用此委托时它没有超级视图(因此我无法查找同级视图)。
我可以访问委托中的“显示/隐藏”按钮(这是一个未记录的NSOutlineButtonCell
实例)makeView(withIdentifier:owner:)
,但此时我不知道它是否代表可以隐藏的组之一。
必须有办法做到这一点,因为 Mail.app(和其他应用程序)能够有条件地禁用组的显示/隐藏按钮。
解决方案
实施
func outlineView(_ outlineView: NSOutlineView, shouldShowOutlineCellForItem item: Any) -> Bool
并返回false
要隐藏的单元格
推荐阅读
- c# - 如何在没有浮动缺陷的情况下将变换旋转设置为绝对 90 度
- c# - 如何在关闭 WebSocket c# 时传递自定义 WebSocketCloseStatus
- javascript - 两个页面之间的转换不适用于 vue.js 和 GSAP
- design-patterns - 如何避免'不能借用`*self`作为可变的,因为它也被借用为不可变的闭包?
- python - 约束随机分配任务给人们一周,非连续
- .net - 返回行数组的所有组合的算法
- angular - KendoUI 图表自定义格式与视觉效果
- python - 使用 OpenCV 阈值电阻带
- r - R 中的 fmincon - 从“pracma”包中消失了?
- php - 如何使用 PHP 访问 XML 中的特定节点