我的逻辑中有一个底线,我很难找到它。我的应用程序上有三个按钮,有两个状态,打开和关闭。每个州都有不同的图像,按钮和图像交换效果很好。我的问题是加载,无论按钮保存到什么状态,我的按钮都加载到选定状态。
在我的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];
每次按下按钮时都会被调用,没有区别。
任何帮助都会很棒,谢谢。
答案 0 :(得分:0)
嗯,我注意到在一个案例中你使用UIControlStateNormal,但另一个你使用UIControlStateSelected。我认为这是你问题的根源。
您说“如果已选中,则将图像设置为未选中”和“如果未选中,请将所选图像设置为选中。