0

如果使用 interface builder 将 Switch 拖到 xib 文件中,则可以在 IB 中将状态设置为 on/off。有没有办法将开关的状态保存到应用程序下次启动时,以便开关处于关闭之前的相同状态?

4

3 回答 3

3

您可以使用NSUserDefaults保存它。

首先将您的交换机连接为 IBOutlet

@property (weak, nonatomic) IBOutlet UISwitch *mySwitch;

还将您的开关连接为 IBAction,事件类型为“Value Changed”

- (IBAction)switched:(id)sender;

然后在你的 UIViewController 中viewDidLoad

BOOL savedState = [[NSUserDefaults standardUserDefaults] boolForKey:@"mySwitch"];
[self.mySwitch setOn:savedState];

在新的switched:行动中

- (IBAction)switched:(id)sender
{
    if (sender == self.mySwitch)
    {
        [[NSUserDefaults standardUserDefaults] setBool:self.mySwitch.isOn forKey:@"mySwitch"];
        [[NSUserDefaults standardUserDefaults] synchronize];
    }
}

希望这可以帮助。

于 2012-12-20T10:03:48.803 回答
2

您可以为此目的使用NSUserDefaults 。

保存开关状态,如:

BOOL yourSwitchState = yourSwitch.on;
[[NSUserDefaults standardUserDefaults] setBool:yourSwitchState forKey:@"Switch"];

viewWillAppear从用户默认值中获取值并将其设置为如下切换:

BOOL switchState = [[NSUserDefaults standardUserDefaults] boolForKey:@"Switch"];
yourSwitch.on = switchState;
于 2012-12-20T09:58:34.017 回答
0

试试这个,

  • (void)handleSwitch:(UISwitch *)switch

{

如果(开关。打开)

{

     [[NSUserDefaults standardUserDefaults] setBool:YES forKey:@"SwitchState"];

}

别的

{ //

    [[NSUserDefaults standardUserDefaults] setBool:NO forKey:@"SwitchState"];

}

}

下次您的应用启动时

switch.on = [[NSUserDefaults standardUserDefaults] boolForKey:@"SwitchState"];

于 2012-12-20T09:58:08.467 回答