私は自分の論理に床があり、それを見つけるのに苦労しています。アプリには、オンとオフの2つの状態を持つ3つのボタンがあります。状態ごとに異なる画像があり、ボタンと画像の交換はうまく機能しています。私の問題はロード時にあり、ボタンがどの状態に保存されていても、ボタンは選択された状態にロードされます。
私のviewDidLoadで、メモリから状態を取得します。
NSString *_greyButtonSavedState = [[NSUserDefaults standardUserDefaults] stringForKey:@"greyButton"];
次に、すぐに状態を確認し、正しい画像を適用します(これは機能していません)。
if ([_greyButtonSavedState isEqualToString:@"ON"]) { [_greyButton setSelected:YES]; } else { [_greyButton setSelected:NO]; }
ボタンが押されるたびに、次のコマンドを実行します。
- (IBAction) _greyButtonPress:(id)sender {
if ([sender isSelected]) {
NSLog(@"Grey map not created");
[sender setImage:_unselectedGrey forState:UIControlStateNormal];
[sender setSelected:NO];
//save state to memory
[[NSUserDefaults standardUserDefaults] setValue:@"OFF" forKey:@"greyButton"];
}else {
NSLog(@"Grey map created");
[sender setImage:_selectedGrey forState:UIControlStateSelected];
[sender setSelected:YES];
//save state to memory
[[NSUserDefaults standardUserDefaults] setValue:@"ON" forKey:@"greyButton"];
}
}
ログには、viewDidLoadで使用されている画像が「選択済み」であるが、ボタンが「未選択」モードであることが示されています。私は:ありとなしで試しました:
[[NSUserDefaults standardUserDefaults] synchronize];
ボタンが押されるたびに呼び出され、違いはありません。
どんな助けでも素晴らしいでしょう、ありがとう。