我正在尝试创建一个首选项窗口。
在其中我有一些复选框样式的 NSButton。setState:
问题是当我调用该方法时它们没有更新。我访问了standarUserDefaults
何时初始化窗口以获取它们应该处于的状态,并计划根据该键所处的状态来更改它们。
我知道他们实际上连接到他们的 IBOutlet 和 IBAction,因为我已经尝试了一些 NSLog-ing 来确保这一点。
我读了一些关于以编程方式更改模型属性的值的内容未反映在 此处的用户界面中,但我不确定这是否是问题所在,或者坦率地说他们在那里指的是什么。
我在 .h 文件中声明了检查按钮,如下所示:
IBOutlet NSButton *defaultDateCheck;
IBOutlet NSButton *closeOnCreationCheck;
IBOutlet NSButton *allowEmptyNumberCheck;
IBOutlet NSPopUpButton *defaultJobSetting;
init 方法如下所示:
-(id)initWithWindowNibName:(NSString *)windowNibName{
self = [super initWithWindowNibName:windowNibName];
if (self) {
NSUserDefaults *myDefaults = [NSUserDefaults standardUserDefaults];
[defaultDateCheck setState:[myDefaults boolForKey:@"useDefaultDate"]];
[closeOnCreationCheck setState:[myDefaults boolForKey:@"closeOnCreation"]];
[allowEmptyNumberCheck setState:[myDefaults boolForKey:@"allowEmptyProjectNumber"]];
[defaultJobSetting selectItemAtIndex:[myDefaults integerForKey:@"defaultJob"]];
}
return self;
}
我还尝试了以下格式来设置复选框,但没有结果:
if ([myDefaults integerForKey:@"useDefaultDate"] == YES) {
[defaultDateCheck setState:NSOnState];
}
else {
[defaultDateCheck setState:NSOffState];
}
复选框的连接 IBAction 方法如下所示:
-(IBAction)toggleCloseOnCreation:(id)sender{
[[NSUserDefaults standardUserDefaults] setBool:([closeOnCreationCheck state] == NSOnState) forKey:@"closeOnCreation"];
[[NSUserDefaults standardUserDefaults] synchronize];
}