【发布时间】:2012-06-02 16:38:22
【问题描述】:
我从界面生成器中获取了 UISwitch。那个时候它的状态是ON。运行应用程序后当我将它的位置更改为OFF并转到另一个屏幕并再次返回该屏幕时,开关状态显示ON而不是我之前设置的OFF。任何人都可以告诉我如何显示我设置的 UISwitch 位置或状态。现在,当我来到这个开关屏幕时,它总是显示为 ON。请帮我。提前致谢。
【问题讨论】:
我从界面生成器中获取了 UISwitch。那个时候它的状态是ON。运行应用程序后当我将它的位置更改为OFF并转到另一个屏幕并再次返回该屏幕时,开关状态显示ON而不是我之前设置的OFF。任何人都可以告诉我如何显示我设置的 UISwitch 位置或状态。现在,当我来到这个开关屏幕时,它总是显示为 ON。请帮我。提前致谢。
【问题讨论】:
当你改变值时,把它保存到 NSUserDefault,所以当你再次回到那个屏幕时,你会查看首选项值并将其设置为开关
- (void)saveValue {
NSUserDefaults *preferences = [NSUserDefaults standardUserDefaults];
[preferences setBool:value forKey:@"switchOnOff"];
[preferences synchronize];
}
- (BOOL)readValue {
NSUserDefaults *preferences = [NSUserDefaults standardUserDefaults];
return [preferences boolForKey:@"switchOnOff"];
}
【讨论】:
当您更改开关状态时,将值作为整数存储在 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"]];
【讨论】:
为 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
【讨论】:
您必须将值保存在
1. 模型类
2. NSUserDefaults
3. 列表
4. 文件档案。
最好的方法是模型类。您将在 Stackoverflow 中轻松获取这些代码。
【讨论】:
如果是您在 IB 中添加的开关,您可以在此处设置其初始状态。否则,在将开关链接到 IBOutlet 后,您可以在 viewDidLoad 中添加如下内容:
[savePass setOn:NO];
它会将开关设置为关闭状态。您需要确保开关链接到 IBOutlet 变量。
【讨论】: