我的逻辑缺陷? iOS按钮状态

时间:2012-05-01 07:59:58

标签: ios uibutton logic viewdidload

我的逻辑中有一个底线,我很难找到它。我的应用程序上有三个按钮,有两个状态,打开和关闭。每个州都有不同的图像,按钮和图像交换效果很好。我的问题是加载,无论按钮保存到什么状态,我的按钮都加载到选定状态。

在我的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];

每次按下按钮时都会被调用,没有区别。

任何帮助都会很棒,谢谢。

1 个答案:

答案 0 :(得分:0)

嗯,我注意到在一个案例中你使用UIControlStateNormal,但另一个你使用UIControlStateSelected。我认为这是你问题的根源。

您说“如果已选中,则将图像设置为未选中”和“如果未选中,请将所选图像设置为选中。