1

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に送信されました

4

3 に答える 3

4

メソッド実行中です。存在しないメソッドを実行しようとしているため、クラッシュしているだけです。

問題はこの行です:

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

NSSliderメソッドがありませんvalue。をdoubleValue返すメソッドがありますdouble

于 2011-01-09T19:06:34.260 に答える
1

スライダーをハードコーディングしました。このような呼び出しの代わりに

[optOndoorzichtigheidSlider intValue];

を使用してみてくださいsender

[sender intValue];

そして、ここの値でラベルを更新しているようです

[optOndoorzichtigheidLabel setStringValue:opacity];

代わりにバインディングの使用を検討できる場合。

于 2011-01-10T15:45:40.853 に答える
0

今、私はこのコードを使用し、それは機能しているようです:

- (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");
}
于 2011-01-10T15:34:40.017 に答える