AnNSTableView
有多个NSCell
s(间接通过NSTableColumn
)。NSCell 遵循享元设计模式;他们是千篇一律的。每列有一个单元格,它被要求为每一行绘制自己。 “这是一个值,在第一行绘制它;这是第二行的值,等等。” 这与基于视图的表格视图形成对比,后者每个单元格都有一个视图实例。
我对 NSPopUpButtonCell 进行了子类化,并且对于每种setXxxValue:
方法,我都会调用NSLog();
消息并将消息转发给超类。唯一被调用的方法(例如,添加新行或刷新表时)是setObjectValue:
. 这是文档中预期的……但这null
是唯一传递给它的东西!!它应该传递一个带有所选项目索引的 NSNumber。
我的桌子画得很好。 我只是想理解这一点,因为我想扩展/更改单元格的行为(显然,否则我不需要子类)。
问:这怎么可能?如何将 NSPopUpButtonCell 设置为一个值以便为每一行绘制正确的值。即使考虑绑定,也是 NSTableColumn 做繁重的工作,不是吗?我错过了什么?