【发布时间】:2012-03-21 19:47:59
【问题描述】:
这是问题所在,我从 Xcode 启动我的应用程序并启动并运行,然后我切换到 settings.app 并将切换开关从 NO 更改为 YES,当我切换回我的应用程序时,键输出 NO not YES。
我认为我遇到了下面的引用,但不确定如何绕过它,如果用户启动应用程序并转到设置并更改切换,它现在不同步,因为 Settings.app 输出在第一次发射到 NO。用户第一次切换到 settings.app 时无法更改设置是没有意义的
“对于新安装的应用程序,应用程序设置包中的默认首选项值在设置应用程序运行之前不会设置。这意味着如果用户在运行设置之前运行您的应用程序,则设置包中指定的默认值不可用。 "
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
NSDictionary *appDefaults = [NSDictionary dictionaryWithObject:@"NO" forKey:@"hideActionBar"];
[defaults registerDefaults:appDefaults];
[defaults synchronize];
然后是我用来检查的代码
- (void)applicationDidBecomeActive:(UIApplication *)application {
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
BOOL hidden = [defaults boolForKey:@"hideActionBar"];
NSLog(@"%d",hidden);
if (hidden) {
viewController.actionButton.enabled = NO;
} else {
viewController.actionButton.enabled = YES;
}
}
和我的设置 Root.plist
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>Type</key>
<string>PSToggleSwitchSpecifier</string>
<key>Title</key>
<string>Hide Action Bar</string>
<key>Key</key>
<string>hideActionBar</string>
<key>DefaultValue</key>
<false/>
<key>TrueValue</key>
<true/>
<key>FalseValue</key>
<false/>
</dict>
</plist>
【问题讨论】:
标签: objective-c ios settings.bundle