Вопрос

У меня есть событие на моем 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 Value]: Недознанный селектор, отправленный на экземпляр 0x100427400

Это было полезно?

Решение 3

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

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

Другие советы

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

Проблема в этой строке:

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

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

Вы жестко закодировали свой слайдер. Вместо звонков, как это

[optOndoorzichtigheidSlider intValue];

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

[sender intValue];

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

[optOndoorzichtigheidLabel setStringValue:opacity];

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top