2012-04-04 68 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]