iOS 切换开关不会在视图控制器之间保留其状态



我为声音分配了几个切换。当打开时,一个短片会播放30秒左右。然后,当在应用程序内的视图控制器之间切换时(例如,切换到菜单页面),当我回到开关时,它们都关闭了!我希望它们在打开后保持其价值,直到用户决定关闭它们。在应用程序内的页面之间切换之前,这不是问题。

谢谢你的帮助。

-(void)kickSwitchChanged:(UISwitch*)sw
{
    AppDelegate* app = [[UIApplication sharedApplication] delegate];
    [app setKickStep:sw.tag state:sw.isOn];
}
-(void)snareSwitchChanged:(UISwitch*)sw
{
    AppDelegate* app = [[UIApplication sharedApplication] delegate];
    [app setSnareStep:sw.tag state:sw.isOn];
}

您所拥有的内容听起来是NSUserDefaults的一个很好的用例。

NSUserDefaults允许您存储将在终止和重新启动应用程序期间一直保持的数据。它旨在用于";重量更轻";数据,比如用户想要打开或关闭开关。

以下是保存布尔值默认值的示例:

let kMySwitchDefaultKey = "isMySwitchOn"
NSUserDefaults.standardUserDefaults().setBool(mySwitch.on, forKey: kMySwitchDefaultKey)

以下是检索相同布尔值默认值的示例:

let wasMySwitchOn = NSUserDefaults.standardUserDefaults().boolForKey(kMySwitchDefaultKey)

通常,当用户更改开关值时,您会设置默认值,您会在viewWillAppear之类的地方获得默认值,并使用保存的值将开关状态更新为以前设置的状态。

来源:https://developer.apple.com/library/ios/documentation/Cocoa/Reference/Foundation/Classes/NSUserDefaults_Class/index.html

编辑

我没有看到你的Obj-C标签。这是Obj-C中相同的设置和获取代码

设置

NSString* const kMySwitchDefaultKey = @"isMySwitchOn";
[[NSUserDefaults standardUserDefaults] setBool:mySwitch.on forKey:kMySwitchDefaultKey];

正在获取

BOOL wasMySwitchOn = [[NSUserDefaults standardUserDefaults] boolForKey:kMySwitchDefaultKey];

最新更新