什么是NSTableView的NSView版本-noteNumberOfRowsChanged?

问题描述 投票:6回答:2

NSTableView -noteNumberOfRowsChanged documentation说:

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

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

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

我已经调用了-reloadDataForRowIndexes:columnIndexes:,并且根据经验不足以让它重新查询-numberOfRowsInTableView(并且它提供了一个范围异常,试图绘制一个大于先前报告的行数的行)。

有没有我应该打电话的方法?或者基于NSView的表是否仅适用于性能关键表,这些表经常会添加行?

macos cocoa nstableview
2个回答
3
投票

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

这就是我在基于NSView的NSTableView中使用此方法的方法:

self.pTableView.noteNumberOfRowsChanged()
self.pTableView.reloadData(forRowIndexes: set, columnIndexes: IndexSet.init(integer: 0))

0
投票

如果我排除noteNumberOfRowsChanged,唯一剩下的就是reloadData

但不建议这样做,因为它强制重新创建所有单元格视图,因此性能将会降低。

© www.soinside.com 2019 - 2024. All rights reserved.