Cocoa NSSlider事件未触发
我的NSSlider上有一个事件,代码如下:Cocoa NSSlider事件未触发,cocoa,macos,nsslider,Cocoa,Macos,Nsslider,我的NSSlider上有一个事件,代码如下: - (IBAction)optOndoorzichtigheidChange:(id)sender { NSUserDefaults* defaults = [NSUserDefaults standardUserDefaults]; NSString *opacity = [NSString stringWithFormat:@"%d",[optOndoorzichtigheidSlider value]]; [defaul
- (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该方法正在执行。你只是因为试图执行一个不存在的方法而崩溃
问题在于这一行:
NSString *opacity = [NSString stringWithFormat:@"%d",[optOndoorzichtigheidSlider value]];
NSSlider没有值方法。它有一个返回double的doubleValue方法。该方法正在执行。你只是因为试图执行一个不存在的方法而崩溃
问题在于这一行:
NSString *opacity = [NSString stringWithFormat:@"%d",[optOndoorzichtigheidSlider value]];
NSSlider没有值方法。它有一个返回double的doubleValue方法。现在我使用这段代码,它似乎可以工作:
- (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");
}
现在我使用这段代码,它似乎起作用了:
- (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");
}
您已硬编码滑块。而不是像这样的电话
[optOndoorzichtigheidSlider intValue];
尝试使用发件人
看起来您正在使用此处的值更新标签
[optOndoorzichtigheidLabel setStringValue:opacity];
当你可以考虑使用绑定时,
你已经硬编码了你的滑块。而不是像这样的电话[optOndoorzichtigheidSlider intValue];
尝试使用发件人
看起来您正在使用此处的值更新标签
[optOndoorzichtigheidLabel setStringValue:opacity];
当你可以考虑使用绑定时,
谢谢,这也是个问题,但它并没有解决我的问题。谢谢,这也是个问题,但它并没有解决我的问题。