2009-06-02 110 views
2

所选项目的NSCell不会改变选择我有一个NSPopUpButtonCell定制的NSCell内,我使用NSPopUpButtonCell内定制当从菜单

- (BOOL)startTrackingAt:(NSPoint)startPoint inView:(NSView *)controlView 

单击时产生弹出菜单。

我也覆盖copyWithZone:在我的自定义单元格中复制popUpCell实例变量,以便我表格视图中的每一行都有自己的弹出单元格。

我的问题是,虽然菜单弹出正常,并且您可以从菜单中选择一个项目,但当选中某个项目时,单元格不会更改其所选项目以与菜单中所选项目匹配。但是,如果我在复制区域中注释掉复制该单元格的行,那么它的行为就会随着选择的进行而发生变化(更改为匹配选定的项目,尽管每一行都将具有相同的选定项目) 。

有人知道这是为什么,或者更重要的是,我该如何解决它?

+0

您是否意识到这样一个事实:NSTableView不会为每行创建NSTableColumn的单元的副本,而是重用一个实例? – 2009-06-09 10:51:45

回答

0

您是否尝试过使用

–trackMouse:inRect:ofView:untilMouseUp: 

代替

startTrackingAt:inView: 

0

我建议不要复制的单元格,而不是使用:

- (void)tableView:(NSTableView *)aTableView willDisplayCell:(id)aCell forTableColumn:(NSTableColumn *)aTableColumn row:(NSInteger)rowIndex

...委托方法来设置单元格与正确的数据绘制的每个行之前。

+0

我实际上在做什么是使用NSArrayController的绑定,它似乎不时地制作单个单元的副本。我不是在任何时候亲自手动调用[cell copy]。 – 2009-06-15 15:23:37