Я пытаюсь создать окно настроек.
В нем у меня есть несколько NSButtons в стиле флажков. Проблема в том, что они не обновляются, когда я вызываю метод setState:
. Я обращаюсь к standarUserDefaults
, когда тогда окно инициализируется, чтобы получить состояние, в котором они должны быть, и планировал изменить их в зависимости от того, в каком состоянии находится этот ключ.
Я знаю, что они на самом деле подключены как к их IBOutlet, так и к IBAction, так как я попробовал NSLog-ing, чтобы убедиться в этом.
Я что-то читал о том, что изменение значения свойства модели программно не отражается в пользовательском интерфейсе здесь, но я не уверен, что это проблема или, честно говоря, на что они там ссылаются.
Я объявил флажки в файле .h следующим образом:
IBOutlet NSButton *defaultDateCheck;
IBOutlet NSButton *closeOnCreationCheck;
IBOutlet NSButton *allowEmptyNumberCheck;
IBOutlet NSPopUpButton *defaultJobSetting;
Метод инициализации выглядит следующим образом:
-(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];
}