設定ウィンドウを作成しようとしています。
その中に、チェックボックス スタイルの NSButton がいくつかあります。setState:
問題は、メソッドを呼び出したときに更新されないことです。when then window is initializedにアクセスしてstandarUserDefaults
、ウィンドウが本来あるべき状態を取得し、そのキーの状態に応じてウィンドウを変更することを計画していました。
それを確認するためにいくつかの NSLog-ing を試したので、実際には IBOutlet と IBAction の両方に接続されていることがわかります。
プログラムでモデル プロパティの値を変更することは、ユーザー インターフェイスに反映されていませ ん。
.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];
}