2

AnNSTableView有多个NSCells(间接通过NSTableColumn)。NSCell 遵循享元设计模式;他们是千篇一律的。每列有一个单元格,它被要求为每一行绘制自己。 “这是一个值,在第一行绘制它;这是第二行的值,等等。” 这与基于视图的表格视图形成对比,后者每个单元格都有一个视图实例。

我对 NSPopUpButtonCell 进行了子类化,并且对于每种setXxxValue:方法,我都会调用NSLog();消息并将消息转发给超类。唯一被调用的方法(例如,添加新行或刷新表时)是setObjectValue:. 这是文档中预期的……但这null是唯一传递给它的东西!!它应该传递一个带有所选项目索引的 NSNumber。

我的桌子画得很好。 我只是想理解这一点,因为我想扩展/更改单元格的行为(显然,否则我不需要子类)。

问:这怎么可能?如何将 NSPopUpButtonCell 设置为一个值以便为每一行绘制正确的值。即使考虑绑定,也是 NSTableColumn 做繁重的工作,不是吗?我错过了什么?

4

1 回答 1

0

“表格中的每一行都共享相同的弹出菜单” - 不必如此。

除了设置表格列的值绑定之外,还可以通过数组控制器将单元格的内容绑定设置为模型对象的数组属性。

您可以保留确定模型中选项的代码(只需创建一个字符串数组)。这样你就不需要自定义子类了。

于 2012-02-22T16:49:24.067 回答