我有两个View Controller类 A类和 B类
在 A类中有一个UIswitch,具体取决于它是打开还是关闭,当在 B类中单击按钮时,应该在 B类中执行一些操作。
我想做的是将开关的状态保存在 A类中,然后将其检索到 B类中
在 A类中,我执行了以下操作来保存开关的状态
NSUserDefaults *switchState=[NSUserDefaults standardUserDefaults];
if(self.switch.on){
[switchState setBool:YES forKey:@"ON"];
}
else {
if (!self.switch.on){
[switchState setBool:NO forKey:@"OFF"];
}
}
[[NSUserDefaults standardUserDefaults]synchronize];
在 B类中,我检查开关的状态并根据该状态执行操作。我在 B类中使用了以下代码。
-(void)whenButtonPressed{
if([[NSUserDefaults standardUserDefaults] objectForKey:@"ON"]){
// Perform Some action
}else if ([[NSUserDefaults standardUserDefaults] objectForKey:@"OFF"]){
//Perform Some other action
}
}
在中,当A类处于打开或关闭状态时,它满足正确的如果是或,则如果是,则条件块
但是在 B类中,它仅满足第一个如果条件,而不考虑 A类的结果,即使关闭了开关。
谁能指出我的错误是什么?
最佳答案
您觉得NSUserDefaults
的工作原理有点错误。
如果您有1个要保存状态的开关,请使用1键。
按下开关时以这种方式保存:
NSUserDefaults *userDefaults = [NSUserDefaults standardUserDefaults];
[userDefaults setBool:self.switch.on forKey:@"switch1"];
[userDefaults synchronize];
检索它:
NSUserDefaults *userDefaults = [NSUserDefaults standardUserDefaults];
BOOL switchOn = [userDefaults boolForKey:@"switch1"];
if (switchOn) {
// switch is enabled
}
else {
// not enabled
}
关于ios - 从其他View Controller访问开关值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14148037/