1

クラス Aクラス Bの2 つのビュー コントローラー クラスがあります。クラス A には UIswitch があり、ON か OFF かに応じて、クラス 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では、スイッチの状態を確認し、状態に基づいてアクションを実行します。Class Bで次のコードを使用しました。

-(void)whenButtonPressed{

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

 //  Perform Some action

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

}
}

クラス A では、 スイッチがオンまたはオフになったときに、正しいIfまたはElse If条件ブロックを満たします。

しかし、クラス Bでは、クラス Aの結果に関係なく、 つまりスイッチがオフになっていても、最初のIf条件のみを満たします。

誰かが私の間違いを指摘できますか?

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 に答える