我需要注册默认首选项值,然后界面在启动时立即使用这些值来设置复选框状态等。
我在应用程序委托中注册了默认值:
- (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
? 有哪些替代方案?