NSSlider событие не стреляет - PullRequest
1 голос
/ 09 января 2011

У меня есть событие на моем NSSlider с этим кодом:

- (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");
}

Но он не запускается, и консоль выдает следующее сообщение: 2011-01-09 19: 31: 18.994 Nistract [1337: a0f] - [значение NSSlider]: нераспознанный селектор, отправленный экземпляру 0x100427400

Ответы [ 3 ]

4 голосов
/ 09 января 2011

Метод выполняется .Вы просто зависаете, потому что пытаетесь выполнить метод, который не существует.

Проблема заключается в следующей строке:

NSString *opacity = [NSString stringWithFormat:@"%d",[optOndoorzichtigheidSlider value]];

NSSlider не имеет value метод.У него есть метод doubleValue, который возвращает double.

1 голос
/ 10 января 2011

Вы жестко запрограммировали свой слайдер. Вместо таких звонков

[optOndoorzichtigheidSlider intValue];

попробуйте использовать sender

[sender intValue];

И, похоже, вы обновляете метку со значением здесь

[optOndoorzichtigheidLabel setStringValue:opacity];

Когда вы могли бы вместо этого использовать привязки.

0 голосов
/ 10 января 2011

Теперь я использую этот код, и он, кажется, работает:

- (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");
}
...