我的逻辑有底线,我正在努力寻找它。我的应用程序上有三个按钮,它们有两种状态,打开和关闭。每种状态都有不同的图像,按钮和图像交换运行良好。我的问题是加载时,无论按钮保存到什么状态,我的按钮都会加载到选定状态。
在我的 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];
每次按下按钮时都会被调用,没有区别。
任何帮助都会很棒,谢谢。