2012-08-04 191 views
0

我有一个NSTableView,每个单元包含一个NSPopUpButtonCell。我已将NSPopUpButtonCell的操作设置为只检查选定索引的方法(以便可以保存并重新载入表)。NSPopUpButtonCell indexOfSelectedItem总是返回0

thePopUpButtonCell.action = @selector(popUpChangedValue); 

-(void)popUpChangedValue { 

    NSLog(@"%ld", [thePopUpButtonCell indexOfSelectedItem]); 

} 

无论我选择什么,它说所选的索引是0,即使它不是。你知道这是什么原因吗?

+0

PopUpButtonCell是什么?这是一个IBOutlet连接到IB的单元格吗? – rdelmar 2012-08-04 23:13:21

+0

@rdelmar是的,它是 – 2012-08-04 23:15:41

+0

这不是你在桌子上这样做的方式。如果您记录PopUpButtonCell,则无论您点击哪一行,都会看到它返回相同的实例。 – rdelmar 2012-08-04 23:21:15

回答

3

我这样做的方式是绑定。你需要在你的数组中有一个字段(NSDictionary中的一个键值对)来保存弹出选择的值。在IB中,您将拥有一个数组控制器,其内容数组绑定到您的数组(包括上面提到的字典)。具有弹出窗口的列将其选定值绑定到数组控制器的arrangeObjects,并在字典中使用键名称的模型键路径。当您更改弹出窗口中的选择时,数组的值将通过绑定的魔术更新。

0

看起来像你的thePopUpButtonCell也许也是零?或许还有一些保留等问题。

+0

我将它链接到XIB文件中的NSPopUpButtonCell。输出它显示''。 NSLog(@“%@”,thePopUpButtonCell);'你有其他想法吗? – 2012-08-04 23:20:00