événement NSSlider pas de tir
Question
J'ai eu un événement sur mon NSSlider avec ce code:
- (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");
}
Mais ce n'est pas de tir et la console donne ce message: 2011-01-09 19: 31: 18,994 Nistract [1337: a0f] - [valeur NSSlider]: sélecteur non reconnu envoyé à l'instance 0x100427400
La solution 3
Maintenant, j'utilise ce code et il semble fonctionner:
- (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");
}
Autres conseils
La méthode est d'exécution. Vous êtes juste écraser parce que vous essayez d'exécuter une méthode qui n'existe pas.
Le problème est cette ligne:
NSString *opacity = [NSString stringWithFormat:@"%d",[optOndoorzichtigheidSlider value]];
NSSlider
ne dispose pas d'une méthode de value
. Il a une méthode doubleValue
qui retourne une double
.
Vous avez codé en dur votre curseur. Au lieu d'appels comme celui-ci
[optOndoorzichtigheidSlider intValue];
essayez d'utiliser le sender
[sender intValue];
Et il semble que vous mettez à jour une étiquette avec la valeur ici
[optOndoorzichtigheidLabel setStringValue:opacity];
Lorsque vous pouvez envisager d'utiliser Manchettes à la place.