0

如果我将UISwitch控制器切换到“关闭”并离开视图控制器并返回到视图控制器,它将显示UISwitch“打开”(默认值)而不是“关闭”。从视图控制器切换到视图控制器时,如何保存 UISwitch 控制器的值?

- (void)controlsEnabled:(BOOL)enabled
{
    self.onandoffSwitch.enabled = enabled;   
    if (enabled)
    {
        NSLog(@"ON");    
    }
    else
    {
        NSLog(@"OFF");     
    }
}
4

2 回答 2

5

您需要以某种方式保持设置。这是一个使用示例NSUserDefaults

[[NSUserDefaults standardUserDefaults] setBool:yourSwitch.on forKey:@"switchValue"];
[[NSUserDefaults standardUserDefaults] synchronize];

并在再次加载视图层次结构时阅读它:

NSUserDefaults *preferences = [NSUserDefaults standardUserDefaults];
BOOL state = [[NSUserDefaults standardUserDefaults] boolForKey:@"switchValue"];
于 2013-02-25T21:52:58.637 回答
0

开关状态不持久的最可能原因是您正在创建控制器的新实例(具有默认开关状态),而不是回到您最初来自的那个实例。如果您使用转场,它们总是在您执行时实例化新控制器(展开转场除外)。当您解除它们时,模态呈现的控制器也会被释放,除非您在某处保持对它们的强烈引用。因此,如何使交换机保持其状态取决于您是否要返回到同一个实例,以及您如何去做。

于 2013-02-25T22:45:22.083 回答