tags - 如何获取 NSSliderCell Objective C的标记

  显示原文与译文双语对照的内容
0 0

我的项目中有三个滑块,它们都有CustomSlider类。 我想让这三个滑块有不同的旋钮。 查看图片。

由于滑块已经有标签我决定用它们来做这个目的。

我试过这个:


int myTag = [self tag];

还有这个:


NSButton *button = [super self];
int myTag = [button tag];

如果没有成功任何想法? 是否有其他方法让类知道哪个对象正在发送消息?

,Ronald

enter image description here

时间: 原作者:

0 0

标记是一个 long 。 NSSliderCells从NSActionCell继承它的标记,因此有一个标记与使用NSSliderCell的NSSlider分离,它继承了来自的标记。 对于定制NSSliderCell类,[self tag] 在XIB中返回sliderCell的标记集。

下面是自定义 slider 单元格类的标题:


#import <AppKit/AppKit.h>
@interface EWSliderCell : NSSliderCell
@end

下面是整个类本身:


#import"EWSliderCell.h"
@implementation EWSliderCell
-(NSRect)rectOfTickMarkAtIndex:(NSInteger)index {
 static BOOL reportedTag;
 if (!reportedTag) {
 long myTag = [self tag];
 NSLog(@"myTag=%ld", myTag);
 reportedTag = TRUE;
 }
 return CGRectMake(0.0, 0.0, 0.0, 0.0);//remove the tick marks from the slider
}
@end

这将执行并报告正确的标记。

我无法复制你报告的错误消息。 但是如果我( 错误地) 写的话 myTag = [EWSliderCell tag]; 然后我看到"选择器没有已知的类方法'标签"。 tag 不是类方法,它是一个实例方法。 ( 这是正确的) 你能发布产生错误消息的代码?

原作者:
...