これは問題です。私はXcodeからアプリケーションを起動して起動し、settings.appに切り替えて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];
、その後、私はそれがしたい場合は、それをあなたが任意の値を設定する必要はありませんBOOL
変数の場合
- (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>
ありがとう、非常に役に立つ答え。私は、設定から、私のアプリに戻ってきた高速切り替えを使って、私のアプリが新しい値を見るのに十分な速さでnsdefaultsキーに書き込むのではないことを理解しました。回避策への道を見つけ出す必要があります。バックグラウンドの10分の実行物を追加したり、キー値をチェックする前に数秒間タイマーを設定したりします。 – BigB