0

我的逻辑有底线,我正在努力寻找它。我的应用程序上有三个按钮,它们有两种状态,打开和关闭。每种状态都有不同的图像,按钮和图像交换运行良好。我的问题是加载时,无论按钮保存到什么状态,我的按钮都会加载到选定状态。

在我的 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 回答