Declaración del método NSSLider requerido (SliderDidMove) que no se encuentra en la documentación del desarrollador de Apple
-
27-10-2019 - |
Pregunta
Trabajando en un tutorial con un NSSLider.
Lo que quiero: mover el control deslizante mostrará un valor deslizante en nstextfield.
El tutorial explica que el siguiente método mostrará el valor del control deslizante en el campo de texto:
- (IBAction)sliderDidMove:(id)sender {
NSSlider *slider = sender;
double value = [slider doubleValue];
[sliderValueLabel setDoubleValue:value];
}
El método no funciona, así que intenté encontrar la declaración del método en el sitio web del desarrollador de manzanas, pero no pude encontrarla. Según tengo entendido, el método: SliderDidMove Un método de clase de la clase NSSLider, ¿por qué no puedo encontrar ninguna documentación?
Solución
Cuando cambia el valor del control deslizante, envía -[NSControl action]
a su -[NSControl target]
. Entonces, en Interface Builder, necesita CTRL-Drag desde el control deslizante hasta el objeto que tiene sliderDidMove:
(Ese probablemente será delegado de aplicaciones o propietario del archivo). El nombre es elegido por el autor del tutorial, puede ser cualquier otra cosa.
Alternativamente, puede configurarlo programáticamente:
[slider setTarget:self]; // assume the handler is [self sliderDidMove:]
[slider setAction:@selector(sliderDidMove:)];
Tenga en cuenta también que esta tarea en particular se resuelve mejor con los enlaces: vincule el valor de los controles deslizantes y la etiqueta a un double
propiedad de algún objeto, y el cacao los mantendrá sincronizados.
Otros consejos
En Swift
...
// Somewhere maybe in viewDidLoad ...
slider.target = self
slider.action = #selector(sliderDidMove)
// Later on..
func sliderDidMove(){
print("The slider moved!")
}