【问题标题】:Access Switch Value From Different View Controller从不同的视图控制器访问开关值
【发布时间】:2012-12-18 08:29:57
【问题描述】:

我有两个视图控制器类 A 类 & B 类 Class A 中有一个 UIswitch,取决于它是打开还是关闭,当在 中单击按钮时,它应该会导致在 Class B 中执行一些操作B类

我要做的是将开关的状态保存在 Class A 中,然后将其检索到 Class 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 中的结果无关,即即使打开了开关关闭。

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

【问题讨论】:

    标签: ios xcode model-view-controller view uiswitch


    【解决方案1】:

    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
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多