ios - 从其他View Controller访问开关值

标签 ios xcode model-view-controller view uiswitch

我有两个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/

相关文章:

ios - Apple ios API - 电话

ios - SIRI 不会根据提供的参数回复,而是打开 "Shortcut"应用程序

iphone - 为什么会出现无效上下文错误?

iOS 10.0.1 和 Xcode 错误 : "Could not find developer disk image"

java - Spring MVC Web 服务调度程序

iphone - 在 iOS 应用程序中使用 .mdb 文件而不是 SQLite?

ios - 在 Swift 中不是初始的主从 View

ios - 如何在iOS中显示来自网络的pdf

java - 为什么要使用模型- View - Controller ?

javascript - ASP MVC2 在 javascript 中执行 Controller 方法