私はサウンドエフェクトをミュートするために使用されるUISwitchを持っています。 スイッチがONに設定されていると、効果音はミュートになります。 状態はNSUserDefaultsを使用して保存されます。それは素晴らしい作品です。しかし、アプリケーションをインストールした後初めて起動したときに、設定に入り、スイッチはOFFに設定されていますが、サウンドはありません。しかし、スイッチをもう一度押すと、サウンドエフェクトが機能します。UISwitchは初めてアプリケーションを起動するときにデフォルト値をOFFに設定します
スイッチのデフォルト値をOFFに設定するにはどうすればよいですか。
私は同様のexempelsを見ましたが、私はそれを動作させることはありません。私はこのコードを持っている最初のViewControllerで
:
- (void)viewDidLoad {
NSUserDefaults *standardDefaults = [NSUserDefaults standardUserDefaults];
if ([[NSUserDefaults standardUserDefaults]objectForKey:@"switchKeyLjud"]==nil)
{
[[standardDefaults stringForKey:@"switchKeyLjud"] isEqual: @"off"];
}
if ([[standardDefaults stringForKey:@"switchKeyLjud"] isEqual: @"off"]) {
ImageViewLjud.hidden = YES;
}
}
と設定でのViewController:
- (void)viewDidLoad {
NSUserDefaults *standardDefaults = [NSUserDefaults standardUserDefaults];
self->switchOutletLjud.on = ([[standardDefaults stringForKey:@"switchKeyLjud"]
isEqualToString:@"On"]) ? (YES) : (NO);
if ([[standardDefaults stringForKey:@"switchKeyLjud"] isEqual: @"On"]) {
[ImageViewLjud setImage:[UIImage imageNamed:@"ljudOFF.png"]];
}
else {
[ImageViewLjud setImage:[UIImage imageNamed:@"ljudON.png"]];
}
}
、これは任意のヘルプ
- (IBAction)switchLjudChanged:(UISwitch *)sender {
NSUserDefaults *standardDefaults = [NSUserDefaults standardUserDefaults];
if (sender.on == 0) {
[standardDefaults setObject:@"Off" forKey:@"switchKeyLjud"];
} else if (sender.on == 1) {
[standardDefaults setObject:@"On" forKey:@"switchKeyLjud"];
}
if ([[standardDefaults stringForKey:@"switchKeyLjud"] isEqual: @"On"]) {
[ImageViewLjud setImage:[UIImage imageNamed:@"ljudOFF.png"]];
}
else {
[ImageViewLjud setImage:[UIImage imageNamed:@"ljudON.png"]];
}
[standardDefaults synchronize];
}
おかげスイッチです! !それはあなたのサンプルコードでは非常に簡単なエラーのように見えます
お返事ありがとうございます。最初のViewControllerの間違ったコードをViewDidLoadに投稿しています。最初のif文はありません。ダニエルに感謝 – user3266053