选择NSSegmentedControl的标签

时间:2012-02-09 23:11:13

标签: objective-c nstableview nssegmentedcontrol

我正在尝试在我的IB中实现NSSegmentedControl按钮。

我已将其与- (IBAction)editCart:(id)sender;

相关联

此外,它已连接到NSSegmentedControl *editCartButton;

第一个“细分”是一个“ - ”按钮,用于降低购物车价值。 第二个“段”是一个“+”按钮,用于增加购物车价值。

当我尝试使用“sender”值时:[sender selectedSegment],我收到错误: -[NSTableView selectedSegment]: unrecognized selector sent to instance 0x100622aa0

我的按钮位于NSTableView内。

我也尝试过:[[editCartButton cell] selectedTag]

当我在条件中运行它时,它总是返回值(null)。 我想检索我期望获得的0和1的特定标签,但找不到正确的操作。

非常感谢,谢谢。

3 个答案:

答案 0 :(得分:1)

此:

-[NSTableView selectedSegment]: unrecognized selector
                                sent to instance 0x100622aa0

基本上告诉您sender不是您认为的NSSegmentedControlsenderNSTableView。因此,要么以错误的方式连接,要么在NSSegmentedControl被解除分配时遇到严重的内存管理问题,并且当前在其内存位置找到NSTableView

-(IBAction)editCart:(id)sender中,您可以添加一行:

NSLog(@"editCart, sender = %@",sender);

确认这一点。您可以在代码中的其他位置删除NSLog这样的行,以验证您对应该发生的事情的想法。

答案 1 :(得分:-1)

IBAction中的

尝试用(UISegmentedControl *)替换(id)

答案 2 :(得分:-1)

我在处理更新Seashore(GIMP的端口到本机OS X API)时遇到了类似的问题。

首先,你必须得到NSSegmentedControl的单元格对象:

NSSegmentedControl *segControl = ...
NSSegmentedCell *segCell = [segControl cell];

然后,为要修改的段设置标记:

[segCell setTag:200 forSegment:2];

Apple's documentation中提供了更多信息。