【发布时间】:2014-05-01 09:15:00
【问题描述】:
我的应用程序中有一个带有 UISwitch 元素(清单)的故事板,我正在尝试存储开关状态,以便用户检查一些项目然后离开页面(模态)或关闭应用程序Home 键,UISwitch 元素的状态被记住,用户可以继续检查清单。
如果读取了一个项目并且您关闭了UISwitch,则字体变为红色,否则UISwitch 开启并且字体为白色。
似乎一切正常(仍在学习 OOP 和 Xcode 5),除非我退出页面(以模态方式离开)然后返回 UISwitch 元素再次全部打开。如果我停止模拟器(或 IPAD)并在我到达页面时重新启动应用程序,所有UISwitch 都会再次打开,而不是选择关闭。
如果我使用主页按钮并返回应用程序,UISwitch 元素仍处于它们离开时的状态。
在 .m 文件中,viewDidLoad 方法仅用于其中一个开关:
- (void)viewDidLoad
{
[super viewDidLoad];
// Do any additional setup after loading the view.
NSUserDefaults *standardDefaults = [NSUserDefaults standardUserDefaults];
self.SwitchFlipChart.on = ([[standardDefaults stringForKey:@"Switch1"] isEqualToString:@"On"]) ? (YES) : (NO);
}
以下是相同UISwitch元素的IBAction方法
- (IBAction)SwitchFlipchart:(UISwitch *)sender{
if (SwitchFlipchart.on) {
LabelFlipchart.textColor = [UIColor whiteColor];
} else {
LabelFlipchart.textColor = [UIColor redColor];
}
SwitchFlipchart.hidden = YES;
NSUserDefaults *standardDefaults = [NSUserDefaults standardUserDefaults];
if (sender.tag == 0) {
if (sender.on == 0) {
[standardDefaults setObject:@"Off" forKey:@"Switch1"];
} else if (sender.on == 1) {
[standardDefaults setObject:@"On" forKey:@"Switch1"]; //removed f from fSwitch1
}
}
[standardDefaults synchronize];
}
我是否正确使用了NSUserDefaults,或者是因为我在停止模拟器或模态离开页面时重新加载页面?
是否有更好的(有时更容易不是更好)方法来处理NSUserDefaults 和多个UISwitch 元素?
在模态离开页面后加载页面时,是否有更好的方法来保留 UISwitch 元素状态?
有没有比NSUserDefaults 更好的存储UISwitch 状态的方法?
【问题讨论】:
标签: ios nsuserdefaults uiswitch