0

我从界面生成器中获取了 UISwitch。那个时候它的状态是ON。运行应用程序后当我将它的位置更改为OFF并转到另一个屏幕并再次返回该屏幕时,开关状态显示ON而不是我之前设置的OFF。任何人都可以告诉我如何显示我设置的 UISwitch 位置或状态。现在,当我来到这个开关屏幕时,它总是显示为 ON。请帮我。提前致谢。

4

5 回答 5

3

当您更改值时,将其保存到 NSUserDefault,因此当您再次返回该屏幕时,您会查看首选项值并将其设置为开关

- (void)saveValue  {
    NSUserDefaults *preferences = [NSUserDefaults standardUserDefaults];
    [preferences setBool:value forKey:@"switchOnOff"];
    [preferences synchronize];
}

- (BOOL)readValue  {
    NSUserDefaults *preferences = [NSUserDefaults standardUserDefaults];
    return [preferences boolForKey:@"switchOnOff"];
}
于 2012-05-28T09:47:23.527 回答
1

当您更改开关状态时,将值作为整数存储在 NSUserDefaults 中,以及您的开关所在的 viewController 的 viewDidAppear 方法中。只需通过像这样从 NSUserDefaults 获取值来设置开关状态

//store value to nsuserdefaulrs
    [[NSUserDefaults standardUserDefaults] setBool:switch.on forKey:@"switchStatus"];

//get value from nsuserdefaulrs

[switch setOn:[[NSUserDefaults standardUserDefaults] boolForKey:@"switchStatus"]];
于 2012-05-28T09:48:02.667 回答
1

有一个 UISwitch 的插座,

@property (retain, nonatomic) IBOutlet UISwitch *sswitch;

并建立连接。

- (void)viewDidAppear:(BOOL)animated
{
    [super viewDidAppear:animated];

    if( [[NSUserDefaults standardUserDefaults] boolForKey:@"switch"] )
    {
        [sswitch setOn:YES]
    }
    else
    {
        [sswitch setOn:NO]
    }
}

并且每当开关状态改变时,将值保存在NSUserDefaults

于 2012-05-28T09:49:22.310 回答
0

您必须将值保存在
1. 模型类
2. NSUserDefaults
3. Plist
4. 文档文件中。

最好的方法是模型类。您将在 Stackoverflow 中轻松获得这些代码。

于 2012-05-28T09:49:50.603 回答
0

如果它是您在 IB 中添加的开关,您可以在那里设置其初始状态。否则,在将开关链接到 IBOutlet 后,您可以在 viewDidLoad 中添加如下内容:

[保存密码设置:否];

它会将开关设置为关闭状态。您需要确保开关链接到 IBOutlet 变量。

于 2012-05-28T09:51:15.663 回答