无法在 applicationDidFinishLaunching 中设置 NSSlider 值
Can't set NSSlider value in applicationDidFinishLaunching
我需要在 cocoa 应用程序的首选项 window 中设置一个滑块。
如果我像这样在 awakeFromNib 中设置 NSSlider
-(void)awakeFromNib{
[thresholdSlider setInValue:9];
}
首选项 window 在打开时更新为值。
虽然,因为它是首选项 window,我需要使用 NSUserDefault 注册值,所以当应用程序启动时会 运行 :
- (void)applicationDidFinishLaunching:(NSNotification *)aNotification{
[thresholdSlider setValue:[NSUserDefaults standardUserDefaults] forKey:kthresh];
NSLog( @"%@",[thresholdSlider objectValue]);
}
但我什至无法在 applicationDidFinishLaunching 方法中设置滑块值
- (void)applicationDidFinishLaunching:(NSNotification *)aNotification{
[thresholdSlider setIntValue:9];
NSLog( @“%d”,[thresholdSlider intValue]);}
returns 0 并且滑块在首选项中设置为最小值(在 IB 中设置)window。
我在哪里可以调用 [thresholdSlider setValue:[NSUserDefaults standardUserDefaults] forKey:kthresh];
以使用上次应用程序退出时的用户值更新滑块?
根据Vadian命题编辑的代码:
+(void)initialize{
NSDictionary *dicDefault = @{@"kthresh":@9};
[[NSUserDefaults standardUserDefaults]registerDefaults:dicDefault];}`
`- (void)applicationDidFinishLaunching:(NSNotification*)aNotification{
`//Preferences
NSInteger thresholdValue = [[NSUserDefaults standardUserDefaults] integerForKey:@"kthresh"];`
thresholdSlider.integerValue = thresholdValue;}`
`-(void)applicationWillTerminate:(NSNotification *)notification {
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
[defaults setInteger:thresholdSlider.integerValue forKey:@"kthresh"];
[defaults synchronize];}`
[thresholdSlider setValue:[NSUserDefaults standardUserDefaults] forKey:kthresh];
应该是
[thresholdSlider setObjectValue:[[NSUserDefaults standardUserDefaults] valueForKey:kthresh]];
尽快在 AppDelegate 中注册具有默认值的键值对。如果尚未将自定义值写入磁盘,则始终使用此值。
NSDictionary *defaultValues = @{@"kthresh" : @9};
[[NSUserDefaults standardUserDefaults] registerDefaults:defaultValues];
然后根据需要设置滑块的值,考虑语法
NSInteger thresholdValue = [[NSUserDefaults standardUserDefaults] integerForKey:@"kthresh"];
thresholdSlider.integerValue = thresholdValue;
要将值写入磁盘,请使用此
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults] ;
[defaults setInteger:thresholdSlider.integerValue forKey:@"kthresh"];
[defaults synchronize];
Do not use setValue:forKey:
and valueForKey:
to talk to NSUserDefaults
或者使用 Cocoa 绑定并将键 integerValue
绑定到 Interface Builder 中的 NSUserDefaultsController
实例。
我需要在 cocoa 应用程序的首选项 window 中设置一个滑块。
如果我像这样在 awakeFromNib 中设置 NSSlider
-(void)awakeFromNib{
[thresholdSlider setInValue:9];
}
首选项 window 在打开时更新为值。
虽然,因为它是首选项 window,我需要使用 NSUserDefault 注册值,所以当应用程序启动时会 运行 :
- (void)applicationDidFinishLaunching:(NSNotification *)aNotification{
[thresholdSlider setValue:[NSUserDefaults standardUserDefaults] forKey:kthresh];
NSLog( @"%@",[thresholdSlider objectValue]);
}
但我什至无法在 applicationDidFinishLaunching 方法中设置滑块值
- (void)applicationDidFinishLaunching:(NSNotification *)aNotification{
[thresholdSlider setIntValue:9];
NSLog( @“%d”,[thresholdSlider intValue]);}
returns 0 并且滑块在首选项中设置为最小值(在 IB 中设置)window。
我在哪里可以调用 [thresholdSlider setValue:[NSUserDefaults standardUserDefaults] forKey:kthresh];
以使用上次应用程序退出时的用户值更新滑块?
根据Vadian命题编辑的代码:
+(void)initialize{
NSDictionary *dicDefault = @{@"kthresh":@9};
[[NSUserDefaults standardUserDefaults]registerDefaults:dicDefault];}`
`- (void)applicationDidFinishLaunching:(NSNotification*)aNotification{
`//Preferences
NSInteger thresholdValue = [[NSUserDefaults standardUserDefaults] integerForKey:@"kthresh"];`
thresholdSlider.integerValue = thresholdValue;}`
`-(void)applicationWillTerminate:(NSNotification *)notification {
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
[defaults setInteger:thresholdSlider.integerValue forKey:@"kthresh"];
[defaults synchronize];}`
[thresholdSlider setValue:[NSUserDefaults standardUserDefaults] forKey:kthresh];
应该是
[thresholdSlider setObjectValue:[[NSUserDefaults standardUserDefaults] valueForKey:kthresh]];
尽快在 AppDelegate 中注册具有默认值的键值对。如果尚未将自定义值写入磁盘,则始终使用此值。
NSDictionary *defaultValues = @{@"kthresh" : @9};
[[NSUserDefaults standardUserDefaults] registerDefaults:defaultValues];
然后根据需要设置滑块的值,考虑语法
NSInteger thresholdValue = [[NSUserDefaults standardUserDefaults] integerForKey:@"kthresh"];
thresholdSlider.integerValue = thresholdValue;
要将值写入磁盘,请使用此
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults] ;
[defaults setInteger:thresholdSlider.integerValue forKey:@"kthresh"];
[defaults synchronize];
Do not use
setValue:forKey:
andvalueForKey:
to talk toNSUserDefaults
或者使用 Cocoa 绑定并将键 integerValue
绑定到 Interface Builder 中的 NSUserDefaultsController
实例。