题
我在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];
当您可以考虑使用绑定时。
不隶属于 StackOverflow