我的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
答案 0 :(得分:4)
方法正在执行。你刚刚崩溃,因为你正在尝试执行一个不存在的方法。
问题在于这一行:
NSString *opacity = [NSString stringWithFormat:@"%d",[optOndoorzichtigheidSlider value]];
NSSlider
没有value
方法。它有doubleValue
方法,返回double
。
答案 1 :(得分:1)
您已经对滑块进行了硬编码。而不是像这样的呼叫
[optOndoorzichtigheidSlider intValue];
尝试使用sender
[sender intValue];
看起来你正在用这里的值更新标签
[optOndoorzichtigheidLabel setStringValue:opacity];
当您考虑使用Bindings时。
答案 2 :(得分: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");
}