首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用NSTableViewDataSource填充NSPopUpButtonCell的正确方法

使用NSTableViewDataSource填充NSPopUpButtonCell的正确方法
EN

Stack Overflow用户
提问于 2011-11-09 23:45:16
回答 1查看 547关注 0票数 0

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

例如,我为每个人安排了一行,最喜欢的汽车列中将包含一个NSPopUpButtonCell。每行都有不同的菜单项。第一排(卡玛洛,骑手,F150)第二排(745li,卡玛洛,城市车)等...

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-02-17 07:20:23

从NSTableColumn.h文件

允许按行自定义用于此NSTableColumn的单元格。当绘制'row‘时,NSTableView将调用-tableColumn dataCellForRow:。默认情况下,它只调用-dataCell。如果子类需要对不同的行使用不同的单元格,那么它们可以覆盖-dataCellForRow:。在Leopard和更高版本中,可以使用NSTableView委托方法-tableView:dataCellForTableColumn:row:来避免对NSTableColumn进行子类化。在这两种情况下,返回的单元格都应该正确地实现-copyWithZone:,因为NSTableView可能会复制单元格。

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

当tableViewController在objectValueForTableColumn:(datasource方法)中提供selectedIndex时,菜单中并不包含所有的菜单时间,因此我必须调用dataCellForRow来获取菜单和菜单中所选项目的索引。

tableViewController实现了dataCellForRow:这将创建一个新的NSPopUpButtonCell并用菜单项填充它。

它是有效的,但看起来很复杂。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8067542

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档