【问题标题】:Save UISwitch Status - Objective C保存 UISwitch 状态 - Objective C
【发布时间】:2016-07-24 11:04:34
【问题描述】:

我知道以前有人问过这个问题,但我还没有找到解决方案。我正在尝试保存 UISwitch 状态,以便无论我输入哪个 VC,该开关状态仍然处于活动状态。但是,每当我离开 VC 时,开关就处于打开状态,它就会关闭。目前这是我用来保存开关状态的代码:

- (IBAction)tvpSwitch:(UISwitch *)sender {
    if (sender.isOn) {
    [[NSUserDefaults standardUserDefaults]setObject:@"on" forKey:@"tvpSwitch"];
    [[NSUserDefaults standardUserDefaults]synchronize];


}
else {
    [[NSUserDefaults standardUserDefaults]setObject:@"off" forKey:@"tvpSwitch"];
    [[NSUserDefaults standardUserDefaults]synchronize];
}}

然后我把这是任何 VC viewWillAppear:

-(void)viewWillAppear:(BOOL)animated
{
if ([[[NSUserDefaults standardUserDefaults]valueForKey:@"tvpSwitch"]isEqualToString:@"on"]) 
{
      (sender.isOn=YES);
}
else
{
      (sender.isOn=NO);
}}

它还在 viewWillAppear 方法中标记为:“使用未声明的标识符'sender'。”我通常尝试使用参考指南,但我很难确定哪里出错了。任何帮助都会很棒!谢谢!

【问题讨论】:

  • 您是如何创建UISwitch 的?因为你的sender 在哪里,你应该参考开关(比如 self.nameOfTheSwitch)

标签: ios objective-c uiswitch


【解决方案1】:

就像你有一个IBAction 一样,我想你创建了UISwitch 低谷Interface Builder。如果是这种情况,请从 UISwitch 创建一个 IBOutlet,然后始终引用它。

【讨论】:

    【解决方案2】:

    在第一个代码中,sn -p senderIBAction 方法中传递的参数,它是对UISwitch 的引用。

    在其他视图控制器中,您需要对 UISwitch 的一些引用,但如果您只想检查该状态而无法在 UI 中更改它,只需从 NSUserDefaults 获取并使用它。

    顺便说一句,NSUserDefaults 的指定方法用于保存BOOL 类型。

    - (IBAction)tvpSwitch:(UISwitch *)sender {
       [[NSUserDefaults standardUserDefaults] setBool:sender.isOn forKey:@"tvpSwitch"];
    }
    

    BOOL switchState;
    
    -(void)viewWillAppear:(BOOL)animated
    {
        switchState = [[NSUserDefaults standardUserDefaults] boolForKey:@"tvpSwitch"];
       // do something with switchState
    }
    

    【讨论】:

    • 我试过你的代码在某些方面是我想要的。我剩下的问题是它只读取它处于开启状态。目标是当状态发生变化时,它会保存到用户默认值,然后我可以调用该状态。我用上面的代码尝试了一些 if 语句,但还没有找到解决方案。你对此有什么想法吗?如果我也误解了您的回答,我深表歉意。
    猜你喜欢
    • 1970-01-01
    • 2018-10-25
    • 2011-10-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-12-31
    相关资源
    最近更新 更多