我在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