什么是NSTableView -noteNumberOfRowsChanged的NSView版本?

use*_*855 6 macos cocoa nstableview

NSTableView的-noteNumberOfRowsChanged文档说:

注意:使用基于NSView的表视图时,应避免使用此方法。该表将在数据源中查询新的行数,并根据需要使用动画在表的末尾正确插入(或删除)行。

不幸的是,它没有说我应该使用什么!

我已将我的应用程序从基于NSCell的表更改为基于NSView的表,以便使用(略微)更复杂的自定义单元格(据说这些单元格更易于设计/绘制为NSViews),但是我看到了显着的性能问题,即使在小桌子上也是如此。

我已经在调用-reloadDataForRowIndexes:columnIndexes:,从经验上讲,这不足以让它重新查询-numberOfRowsInTableView(并且它给出了范围异常,试图绘制比先前报告的行数更大的行)。

我应该调用一种方法吗?还是基于NSView的表不仅仅用于性能关键型表,这些表经常会添加行?

Li *_*min 3

实际上,我仍在使用func noteNumberOfRowsChanged()基于 NSView 的 tableview,它按计划完美运行。如果不使用这个方法,基于 NSView 的 tableview 就会被破坏。NSTableView 很糟糕,它的文档也很糟糕。

这就是我对基于 NSView 的 NSTableView 使用此方法的方式:

self.pTableView.noteNumberOfRowsChanged()
self.pTableView.reloadData(forRowIndexes: set, columnIndexes: IndexSet.init(integer: 0))
Run Code Online (Sandbox Code Playgroud)