阻止NSOutlineView(或NSTableView)重新滚动

时间:2015-05-25 09:35:59

标签: objective-c macos cocoa

似乎我的基于视图的OutlineView尝试在每次用户滚动时重新渲染文本。我认为这是因为它试图通过重新使用落在可见矩形之外的行来节省内存,然后将新数据重新渲染到那些旧视图。我怎么能禁用它?我愿意牺牲内存来存档,以便我可以获得更好的滚动性能。 (我尝试了各种优化,如图层左右,但没有运气)。

编辑:还有另一个与我的目的相同的问题How to make NSTableView not reuse TableCellViews,但尚无答案:(

1 个答案:

答案 0 :(得分:2)

我觉得你很困惑 - 它不会重新渲染文字。该表仅显示可见区域的视图(下面的警告),并在滚动时拉入新视图 - 可能会重新使用旧视图。

您提供视图。使用委托方法viewForTableColumn:row:并返回给定行的自己的缓存视图。

但这不会阻止绘画;视图可能仍然会被标记为脏和绘制。

我认为你没有问正确的问题。听起来你有性能问题。为了帮助您,我们必须看到样品或仪器痕迹。

  • 警告:响应滚动将拉入非可见区域中的视图。请参阅AppKit发行说明。

卡宾