NSTableView -noteNumberOfRowsChanged documentation说:
注意:使用基于NSView的表视图时,应避免使用此方法。该表将查询数据源以获取新的行数,并根据需要使用动画在表的末尾正确插入(或删除)行。
不幸的是,它没有说我应该使用什么!
我已将我的应用程序从基于NSCell的表更改为基于NSView的表,以便使用(略微)更复杂的自定义单元格(据说更容易设计/绘制为NSView),但我看到了显着的性能问题,甚至在小桌子上。
我已经调用了-reloadDataForRowIndexes:columnIndexes:,并且根据经验不足以让它重新查询-numberOfRowsInTableView(并且它提供了一个范围异常,试图绘制一个大于先前报告的行数的行)。
有没有我应该打电话的方法?或者基于NSView的表是否仅适用于性能关键表,这些表经常会添加行?
实际上,我仍在使用基于NSView的tableview的func noteNumberOfRowsChanged()
,它按计划完美地运行。不使用此方法,基于NSView的tableview被破坏。 NSTableView很糟糕,它的文档也很糟糕。
这就是我在基于NSView的NSTableView中使用此方法的方法:
self.pTableView.noteNumberOfRowsChanged()
self.pTableView.reloadData(forRowIndexes: set, columnIndexes: IndexSet.init(integer: 0))
如果我排除noteNumberOfRowsChanged
,唯一剩下的就是reloadData
。
但不建议这样做,因为它强制重新创建所有单元格视图,因此性能将会降低。