Требуется объявление метода NSSLider (SliderDidMove), не найденное в документации Apple разработчика
-
27-10-2019 - |
Вопрос
Работа над учебником с NSSLider.
Что я хочу: Перемещение слайдера покажет значение слайдера в nstextfield.
Учебник объясняет, что следующий метод будет отображать значение слайдера в текстовом поле:
- (IBAction)sliderDidMove:(id)sender {
NSSlider *slider = sender;
double value = [slider doubleValue];
[sliderValueLabel setDoubleValue:value];
}
Метод не работает, поэтому я пытался найти объявление метода на веб -сайте разработчиков Apples, но не смог его найти. Из моего понимания метод: SliderDidMove Метод класса из класса NSSlider, так почему я не могу найти документацию?
Решение
При изменении значения слайдера он отправляет -[NSControl action]
к его -[NSControl target]
. Анкет Таким образом, в интерфейсном строителе вам нужно CTRL-DRAG от ползунка до объекта, у которого есть sliderDidMove:
(Это, вероятно, будет либо делегатом приложения, либо владельцем файла). Имя выбирается автором учебника, это может быть что угодно.
В качестве альтернативы, вы можете настроить его программно:
[slider setTarget:self]; // assume the handler is [self sliderDidMove:]
[slider setAction:@selector(sliderDidMove:)];
Также обратите внимание, что эта конкретная задача лучше решена при привязках: свяжите значение как слайдера, так и метки с double
Свойство какого -то объекта, и какао сохранит их синхронизировать.
Другие советы
В Swift
...
// Somewhere maybe in viewDidLoad ...
slider.target = self
slider.action = #selector(sliderDidMove)
// Later on..
func sliderDidMove(){
print("The slider moved!")
}