Вот в чем проблема, я запускаю свое приложение из XCode, оно запускается и запускается, затем я переключаюсь на settings.app и меняю переключатель с NO на YES, а когда я переключаюсь обратно в свое приложение, клавиша выводит NO, а не 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>