iOS Toggles不会在视图控制器之间保留其状态

时间:2016-04-19 17:10:26

标签: ios objective-c toggle

我有几个分配给声音的切换。打开时,短片播放约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];
}

1 个答案:

答案 0 :(得分:1)

您听到的内容是NSUserDefaults的一个很好的用例。

NSUserDefaults允许您存储在终止和重新启动应用时将一直保留的数据。它用于“轻量级”数据,例如用户想要打开或关闭开关。

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

let kMySwitchDefaultKey = "isMySwitchOn"

NSUserDefaults.standardUserDefaults().setBool(mySwitch.on, forKey: kMySwitchDefaultKey)

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

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

通常,当用户更改开关值时,您将设置默认值,并且您将获得默认值viewWillAppear,并使用保存的值将开关状态更新为之前设置的值。< / p>

来源: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];