如果我要将UISwitch
控制器切换为“关闭”并离开视图控制器并返回到视图控制器,它将显示UISwitch
“打开”(默认值)而不是“关”。从/向视图控制器切换时如何保存UISwitch控制器的值?
- (void)controlsEnabled:(BOOL)enabled
{
self.onandoffSwitch.enabled = enabled;
if (enabled)
{
NSLog(@"ON");
}
else
{
NSLog(@"OFF");
}
}
答案 0 :(得分:5)
您需要以某种方式保留设置。以下是使用NSUserDefaults
的示例:
[[NSUserDefaults standardUserDefaults] setBool:yourSwitch.on forKey:@"switchValue"];
[[NSUserDefaults standardUserDefaults] synchronize];
再次加载视图层次结构时读取它:
NSUserDefaults *preferences = [NSUserDefaults standardUserDefaults];
BOOL state = [[NSUserDefaults standardUserDefaults] boolForKey:@"switchValue"];
答案 1 :(得分:0)
交换机状态不存在的最可能原因是,您正在创建控制器的新实例(使用默认交换机状态),而不是返回到最初来自的实例。如果你正在使用segue,它们总是在你执行它们时实例化新的控制器(展开segues除外)。当你解雇它们时,模态呈现的控制器也会被解除分配,除非你在某处保留了对它们的强烈引用。那么,如何让交换机保持其状态取决于你是否想要回到同一个实例,以及你如何去做。