【问题标题】:Switch state not linking to Label切换状态未链接到标签
【发布时间】:2016-03-10 21:30:44
【问题描述】:

出于某种原因,使用 NSUserDefaults 来保存我的开关状态,而我的标签似乎不起作用。我可以保存开关的状态并加载它,但是除非我手动更改开关的状态,否则标签不会变为打开或关闭。

        NSUserDefaults *standardDefaults = [NSUserDefaults standardUserDefaults];

    self->switch1.on = ([[standardDefaults stringForKey:@"switchKey"]

                             isEqualToString:@"On"]) ? (YES) : (NO);

如您所见,当开关关闭时我在 label.text = @"OFF" 中添加,但它仍然没有改变。

- (IBAction)switchChanged:(UISwitch *)sender {

NSUserDefaults *standardDefaults = [NSUserDefaults standardUserDefaults];

if (sender.on == 0) {

    label.text = @"OFF";
    [standardDefaults setObject:@"Off" forKey:@"switchKey"];


} else if (sender.on == 1) {

    label.text = @"ON";
    [standardDefaults setObject:@"On" forKey:@"switchKey"];


}

[standardDefaults synchronize];

}

在我想保存开关状态之前,我只是使用了这个。

-(IBAction) alarmSettings1{

if (switch1.on)

{ label.text = @"ON";}


else { label.text = @"OFF";}

}

我知道我只是在做一些简单的错误,但不知道是什么。

【问题讨论】:

  • 为什么你使用 stringForKey?改用 ObjectForKey?
  • 您的网点连接了吗?
  • @DianaProdan 是的,他们是

标签: ios


【解决方案1】:

你应该像这样设置你的布尔值:

[[NSUserDefaults standardUserDefaults] setBool:YES forKey:@"switchKey"];
[[NSUserDefaults standardUserDefaults] synchronize];

所以当你想设置你的开关的状态时,你会这样做:

BOOL switchState = [[NSUserDefaults standardUserDefaults] objectForKey:@"switchKey"]; 
self.switch1.on = switchState;

另外,在您的 IBAction 方法中,像这样读取状态:

- (IBAction)switchChanged:(UISwitch *)sender {
    label.text = sender.on ? @"ON" : @"OFF";
    [[NSUserDefaults standardUserDefaults] setBool:sender.on forKey:@"switchKey"];
    [[NSUserDefaults standardUserDefaults] synchronize];
}

【讨论】:

  • 是的,开关确实保存状态,但标签没有改变。
  • 您的插座接线是否正确?您可能需要检查是否可以更改标签的状态。如果是这种情况,那就是弄清楚你想如何连接到它。
  • switch1 连接到开关,switchChanged 作为 touchupinside 连接到开关,label 连接到标签。但是它仍然没有保存状态。还有 self.switch.on = switchState;必须更改为 self->switch1.on = switchState 才能实际工作,否则会出现错误
  • 尝试将 IBaction 连接到 'valueChanged:' 选择器。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-12-31
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-06-16
相关资源
最近更新 更多