永久隐藏NSTableView / NSOutlineView中的行

时间:2019-01-16 17:51:37

标签: cocoa nstableview appkit nsoutlineview

我的NSOutlineView中有一些行希望永久隐藏(出于与我的数据结构有关的原因)。

在10.13上,使用自动行高和自动布局,我无法查看某些数据行,因此它们对用户隐藏了。

现在我要在10.11上启用我的应用程序,因此我必须手动计算行高。 NSOutlineViewDelegate函数'heightOfRowByItem'坚持将行高度设置为非零,因此我不能再以相同的方式完全隐藏行了。

NSTableView的“ hideRows”方法似乎是一种替代方法。它可以隐藏特定的行而不隐藏其子级(对我而言是完美的)。唯一的问题是,当我拖动行时,一切似乎都“取消隐藏”。

有人知道吗: -如何阻止在拖动时取消隐藏行(我看不到任何文档) -在NSTableView / NSOutlineView中具有不可见行的其他方法。

谢谢

1 个答案:

答案 0 :(得分:0)

创建一个新类作为我们的NSOutlineView项,并更新这些项以反映您的基础模型的状态。看起来可能需要做更多的工作,但是比起在NSOutlineViewDataSource / Delegate方法中变得聪明起来,它要愉快得多。对我来说,在尝试使用现有模型来驱动NSOutlineView时,使用NSOutlineView最为困难,而当创建一个类作为项目时,使用NSOutlineView最简单。

这还有一个优点,就是不会使模型只具有与大纲视图呈现方式有关的功能和状态。