1

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

我把它连接到- (IBAction)editCart:(id)sender;

此外,它连接到NSSegmentedControl *editCartButton;

第一个“段”是一个“-”按钮,用于减少购物车价值。第二个“段”是增加购物车价值的“+”按钮。

当我尝试像这样使用“发件人”值时:[sender selectedSegment],我收到一个错误: -[NSTableView selectedSegment]: unrecognized selector sent to instance 0x100622aa0

我的按钮位于 NSTableView 内。

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

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

非常感谢您的帮助,谢谢。

4

3 回答 3

1

这个:

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

基本上告诉你,sender不是NSSegmentedControl你认为的那样。是sender一个NSTableView. 因此,要么您以错误的方式连接事物,要么您有一个严重的内存管理问题,其中NSSegmentedControl被释放,并且NSTableView当前可以在其内存位置找到。

-(IBAction)editCart:(id)sender你可以添加一行:

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

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

于 2012-02-10T02:09:09.967 回答
-1

在 IBAction 中尝试用 (UISegmentedControl *) 替换 (id)

于 2012-02-10T01:58:42.357 回答
-1

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

首先,你必须得到NSSegmentedControl's cell 对象:

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

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

[segCell setTag:200 forSegment:2];

更多信息可在Apple 的文档中找到。

于 2016-07-20T05:07:35.537 回答