【问题标题】:How to show/hide button with switch that saves value in NSUserDefaults如何使用在 NSUserDefaults 中保存值的开关显示/隐藏按钮
【发布时间】:2012-05-03 16:34:12
【问题描述】:

我有一个名为 sosSwitchUISwitch,它在 NSUserDefaults 键中保存了价值:MySwitch 我有 UIButton 命名为 sosBtn。 如何根据 NSUserDefaults 中保存的开关值显示/隐藏 sosBtn?我需要把代码放在哪里?在 viewDidLoad?谢谢!

【问题讨论】:

    标签: ios xcode uibutton nsuserdefaults uiswitch


    【解决方案1】:

    假设您已经拥有:

    @property (retain, nonatomic) IBOutlet UIButton *sosBtn;
    @property (retain, nonatomic) IBOutlet UISwitch *sosSwich;
    - (IBAction)sosSwitch:(id)sender;
    

    试试这个:

    -(void)viewDidLoad
    {    
        if ([[NSUserDefaults standardUserDefaults] boolForKey:@"MySwitch"])
        {
            self.sosBtn.hidden = NO;
            [self.sosSwich setOn:YES animated:YES]; 
        }
        else 
        {
            self.sosBtn.hidden = YES;
            [self.sosSwich setOn:NO animated:YES];
        }
    }
    
    - (IBAction)sosSwitch:(id)sender 
    {
        UISwitch *mySosSwitch = (UISwitch *)sender;
        if (mySosSwitch.on)
        {
            self.sosBtn.hidden = NO;
            [[NSUserDefaults standardUserDefaults] setBool:YES forKey:@"MySwitch"];  //YES means sosBtn should be visible
            [[NSUserDefaults standardUserDefaults] synchronize];
        }
        else 
        {
            self.sosBtn.hidden = YES;
            [[NSUserDefaults standardUserDefaults] setBool:NO forKey:@"MySwitch"];
            [[NSUserDefaults standardUserDefaults] synchronize];
        }
    }
    

    【讨论】:

    • 好的,我明白了.. 但是如果我的开关位于模态视图控制器和视图中的按钮,我该怎么做?
    • 在这种情况下,您将需要实现可选的委托方法。查看我对此 SO 的回答,其中包含委托方法回调的示例。 stackoverflow.com/questions/8606674/…
    猜你喜欢
    • 2012-07-08
    • 2014-06-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多