evento NSSlider non sparare
Domanda
Ho avuto un evento sul mio NSSlider con questo codice:
- (IBAction)optOndoorzichtigheidChange:(id)sender {
NSUserDefaults* defaults = [NSUserDefaults standardUserDefaults];
NSString *opacity = [NSString stringWithFormat:@"%d",[optOndoorzichtigheidSlider value]];
[defaults setObject:opacity forKey:@"opacity"];
[mainWindow setAlphaValue:[optOndoorzichtigheidSlider doubleValue]];
[defaults synchronize];
[optOndoorzichtigheidLabel setStringValue:opacity];
NSLog(@"fired");
}
Ma non è sparare e la console dà questo messaggio: 2011-01-09 19: 31: 18,994 Nistract [1337: a0f] - [valore NSSlider]: selettore non riconosciuto inviato ad esempio 0x100427400
Soluzione 3
Ora uso questo codice e sembra funzionare:
- (IBAction)optOndoorzichtigheidChange:(id)sender {
NSUserDefaults* defaults = [NSUserDefaults standardUserDefaults];
NSString *opacity = [NSString stringWithFormat:@"%d",[optOndoorzichtigheidSlider intValue]];
[defaults setObject:opacity forKey:@"opacity"];
[[mainWindow animator] setAlphaValue:((double) [optOndoorzichtigheidSlider intValue] / 100)];
[defaults synchronize];
[optOndoorzichtigheidLabel setStringValue:opacity];
NSLog(@"fired");
}
Altri suggerimenti
Il metodo è di esecuzione. Stai solo crash, perché si sta cercando di eseguire un metodo che non esiste.
Il problema è questa linea:
NSString *opacity = [NSString stringWithFormat:@"%d",[optOndoorzichtigheidSlider value]];
NSSlider
non ha un metodo value
. Ha un metodo di doubleValue
che restituisce un double
.
Hai hard-coded tuo cursore. Invece di chiamate come questo
[optOndoorzichtigheidSlider intValue];
provare a utilizzare il sender
[sender intValue];
E sembra che si sta aggiornando un'etichetta con il valore qui
[optOndoorzichtigheidLabel setStringValue:opacity];
Quando si potrebbe considerare l'utilizzo di Associazioni, invece.