我需要在cocoa应用程序的首选项窗口中设置一个滑块。
如果我在awakeFromNib中设置NSSlider就像这样
-(void)awakeFromNib{
[thresholdSlider setInValue:9];
}
首选项窗口会在打开时使用值更新。
虽然,因为它是一个首选项窗口,我需要在NSUserDefault中注册Value,所以当启动时的应用程序运行时:
- (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]);}
返回0并在首选项窗口中将滑块设置为最小值(在IB中设置)。
在哪里可以调用[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];}`
答案 0 :(得分:1)
在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];
请勿使用
进行对话setValue:forKey:
和valueForKey:
与NSUserDefaults
或者使用Cocoa绑定并将键integerValue
绑定到Interface Builder中的NSUserDefaultsController
实例。
答案 1 :(得分:0)
[thresholdSlider setValue:[NSUserDefaults standardUserDefaults] forKey:kthresh];
应该是
[thresholdSlider setObjectValue:[[NSUserDefaults standardUserDefaults] valueForKey:kthresh]];