Dichiarazione del metodo NSSlider richiesto (SliderDidMove) non trovata sulla documentazione degli sviluppatori di Apple
-
27-10-2019 - |
Domanda
Lavorando su un tutorial con un nsslider.
Quello che voglio: spostare il cursore mostrerà il valore del cursore in nstextfield.
Il tutorial spiega che il seguente metodo mostrerà il valore del cursore nel campo di testo:
- (IBAction)sliderDidMove:(id)sender {
NSSlider *slider = sender;
double value = [slider doubleValue];
[sliderValueLabel setDoubleValue:value];
}
Il metodo non funziona, quindi ho provato a trovare la dichiarazione del metodo sul sito Web di sviluppatori di Apple ma non sono riuscito a trovarlo. Dalla mia comprensione è il metodo: SliderDidMove un metodo di classe della classe nsslider, quindi perché non riesco a trovare alcuna documentazione?
Soluzione
Quando il valore del dispositivo di scorrimento cambia, invia -[NSControl action]
al suo -[NSControl target]
. Quindi in Interface Builder è necessario eliminare ctrl dal cursore all'oggetto che ha sliderDidMove:
(Questo sarà probabilmente il delegato di app o il proprietario del file). Il nome è scelto dall'autore del tutorial, può essere qualsiasi altra cosa.
In alternativa, puoi impostarlo a livello di programmazione:
[slider setTarget:self]; // assume the handler is [self sliderDidMove:]
[slider setAction:@selector(sliderDidMove:)];
Si noti inoltre che questo particolare compito è meglio risolto con le associazioni: legare il valore del cursore e dell'etichetta a a double
Proprietà di un oggetto e il cacao li manterrà sincronizzati.
Altri suggerimenti
In Swift
...
// Somewhere maybe in viewDidLoad ...
slider.target = self
slider.action = #selector(sliderDidMove)
// Later on..
func sliderDidMove(){
print("The slider moved!")
}