我正在尝试在我的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的特定标签,但找不到正确的操作。
非常感谢,谢谢。
答案 0 :(得分:1)
此:
-[NSTableView selectedSegment]: unrecognized selector
sent to instance 0x100622aa0
基本上告诉您sender
不是您认为的NSSegmentedControl
。 sender
是NSTableView
。因此,要么以错误的方式连接,要么在NSSegmentedControl
被解除分配时遇到严重的内存管理问题,并且当前在其内存位置找到NSTableView
。
在-(IBAction)editCart:(id)sender
中,您可以添加一行:
NSLog(@"editCart, sender = %@",sender);
确认这一点。您可以在代码中的其他位置删除NSLog
这样的行,以验证您对应该发生的事情的想法。
答案 1 :(得分:-1)
尝试用(UISegmentedControl *)替换(id)
答案 2 :(得分:-1)
我在处理更新Seashore(GIMP的端口到本机OS X API)时遇到了类似的问题。
首先,你必须得到NSSegmentedControl
的单元格对象:
NSSegmentedControl *segControl = ...
NSSegmentedCell *segCell = [segControl cell];
然后,为要修改的段设置标记:
[segCell setTag:200 forSegment:2];
Apple's documentation中提供了更多信息。