0

私は自分の論理に床があり、それを見つけるのに苦労しています。アプリには、オンとオフの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];

ボタンが押されるたびに呼び出され、違いはありません。

どんな助けでも素晴らしいでしょう、ありがとう。

4

1 に答える 1

0

さて、ある場合にはUIControlStateNormalを使用しますが、他の場合にはUIControlStateSelectedを使用します。それがあなたの問題の原因だと思います。

「選択されている場合は画像を未選択に設定してください」と「選択されていない場合は選択されている画像を選択済みに設定してください」と言っています。

于 2012-05-01T08:04:17.403 に答える