0

假设一个人有很多汽车,他们有一辆最喜欢的汽车。我似乎无法在文档中找到它描述了在表格视图中填充 NSPopUpButtonCell 的正确方法,每行都不同。

例如,我会为每个人设置 1 行,Favorite Car 列中会有一个 NSPopUpButtonCell。每行都有不同的菜单项。第 1 行(Camaro、Cavalier、F150)第 2 行(745li、Camaro、Town Car)等...

4

1 回答 1

1

从 NSTableColumn.h 文件

允许对用于此 NSTableColumn 的单元格进行每行自定义。NSTableView 将在绘制“行”时调用 -[tableColumn dataCellForRow:]。默认情况下,这只是调用 -dataCell。子类可以覆盖 -dataCellForRow: 如果他们可能需要为不同的行使用不同的单元格。在 Leopard 及更高版本上,NSTableView 委托方法 -tableView:dataCellForTableColumn:row: 可用作避免子类化 NSTableColumn 的便利。在这两种情况下,返回的单元格都应该正确实现 -copyWithZone:,因为 NSTableView 可能会复制单元格。

该表将在弹出单元格中向数据源询问 selectedIndex,然后向代理询问菜单项。我有我的委托和数据源相同的对象,我们称它为 tableViewController。

当 tableViewController 在 objectValueForTableColumn: 中提供 selectedIndex 时:(数据源方法),菜单中没有所有菜单时间,所以我必须调用 dataCellForRow 来获取菜单和菜单中所选项目的索引.
tableViewController 实现 dataCellForRow: 创建一个新的 NSPopUpButtonCell 并用菜单项填充它。

它有效,但似乎令人费解。

于 2012-02-16T23:20:23.123 回答