デフォルトの設定値を登録する必要があります。これは、起動直後にインターフェイスで使用され、チェックボックスの状態などを設定するために使用されます。
アプリのデリゲートにデフォルトを登録します。
- (void)applicationDidFinishLaunching:(NSNotification *)aNotification
{
NSLog(@"Did finish launching");
NSDictionary *defaultPrefs = [NSDictionary dictionaryWithObject:[NSNumber numberWithBool:YES] forKey:@"isEnabled"];
[[NSUserDefaults standardUserDefaults] registerDefaults:defaultPrefs];
}
次に、MainMenu.xib ファイルを使用して作成されたオブジェクトで、既定値を使用します。
- (void)awakeFromNib
{
NSLog(@"Awake from nib");
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
[self.checkbox setState:([defaults boolForKey:@"isEnabled"] ? NSOnState : NSOffState)];
}
しかし、これらは間違った順序で呼び出されます!
> Awake from nib
> Did finish launching
// Preference == `nil` or `0`, not the default value I set.
したがって、使用したいときにデフォルトの設定が設定されていません。
registerDefaults:
デフォルト設定を使用して .xib ファイル インターフェイス オブジェクトを設定できるようにするには、どこに行けばよいですか?
間違ったデリゲート メソッドを使用していませんか? applicationDidFinishLaunching
/ awakeFromNib
? 代替手段は何ですか?