Как я могу получить тег NSSliderCell Objective-C
Я работаю над CustomSlider Class. В моем проекте у меня есть три ползунка, которые все имеют класс CustomSlider. Я хочу, чтобы у этих трех ползунков были разные ручки. Смотрите изображение.
Поскольку у слайдеров уже есть теги, я решил использовать их для этой цели. К сожалению, я не вижу, как получить значение тега NSSliderCell.
Я попробовал это:
int myTag = [self tag];
и это:
NSButton *button = [super self];
int myTag = [button tag];
Оба безуспешно, есть идеи? Есть ли другой способ сообщить классу, какой объект отправляет сообщение?
Привет, Рональд
1 ответ
Тег является long
, NSSliderCells наследуют свой тег от NSActionCell, поэтому имейте тег, отдельный от NSSlider, который использует NSSliderCell, который наследует свой тег от NSControl. В пользовательском классе NSSliderCell [self tag]
возвращает набор тегов для sliderCell в XIB.
Вот заголовок для пользовательского класса ячейки слайдера:
#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'. tag
это не метод класса, это метод экземпляра. (Это правильное слово?) Можете ли вы опубликовать код, который выдал сообщение об ошибке?