1

我有两个 View Controller 类Class AClass B在Class A 中有一个 UIswitch ,取决于它是打开还是关闭,当在 Class B 中单击按钮时,它应该会导致在 Class 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 类中,我检查开关的状态并根据状态执行操作。我在Class B中使用了以下代码。

-(void)whenButtonPressed{

if([[NSUserDefaults standardUserDefaults] objectForKey:@"ON"]){

 //  Perform Some action

 }else if ([[NSUserDefaults standardUserDefaults] objectForKey:@"OFF"]){
//Perform Some other action

}
}

A 类中, 当开关打开或关闭时,它满足正确的IfElse If条件块

但是在Class B中,它只满足第一个If条件,而与Class A的结果无关, 即即使开关关闭。

谁能指出我的错误是什么?

4

1 回答 1

3

你弄错了它是如何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
}
于 2013-01-03T22:38:47.687 回答