2012-04-04 57 views
1

我试图创建一个首选项窗口。
其中我有一些复选框样式NSButtons。问题是,当我调用setState:方法时,它们不会更新。我访问standarUserDefaults时,当窗口初始化,以获得他们应该在的状态,并计划改变它们,取决于该键的状态。setState不更新复选框的视图

我知道它们实际上连接到它们的IBOutlet和IBAction因为我已经尝试了一些NSLog来确保这一点。

我读一些有关更改程序不会反映在用户界面here模型属性的值,但我不知道如果是这样的问题,或者坦白地说什么他们指的是在那里。

我宣布像这样在.h文件中checkbuttons:

IBOutlet NSButton *defaultDateCheck; 
IBOutlet NSButton *closeOnCreationCheck; 
IBOutlet NSButton *allowEmptyNumberCheck; 
IBOutlet NSPopUpButton *defaultJobSetting; 

init方法看起来是这样的:

​​

我也试过下列格式设置的复选框但没有结果:

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]; 
} 

回答

3

因为-init视图设置在-viewDidLoad方法的状态和它的子视图不存在尚未

+0

干杯,完美的作品。谢谢。 – Bjorninn 2012-04-04 16:14:22

1

当设置的值默认使用:

[myDefaults setObject:[NSNumber numberWithBool:YES] forKey:@"YourKey"]; 

当检查,看看是否值为true或false,用途:

[[[NSUserDefaults standardUserDefaults] objectForKey:@"YourKey"] boolValue]