切换ViewControllers时的UISwitch / UISlider值

时间:2017-04-19 08:10:38

标签: ios objective-c xcode

如何保留UISwitch或UISlider的值,以便当您离开并返回ViewController时,它将具有与您离开时相同的值?

我对swift没有太多的知识或经验,所以如果可以,请在Objective-C中解释!

2 个答案:

答案 0 :(得分:1)

您可以像这样将开关状态保存到NSUserDefault。

添加与您的swich按钮相关联的操作

.h文件

- (IBAction)changeStatus:(id)sender;

.m文件

- (IBAction)changeStatus:(id)sender {
Boolean status;
UISwitch *mySwitch = (UISwitch *)sender;
if ([mySwitch isOn]) {
    status = 1;
} else {
    status = 0;
}
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
[defaults setBool:status forKey:@"switchStatus"];
[defaults synchronize];

}

加载使用

NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
Boolean switchStatus = [defaults boolForKey:@"switchStatus"];
if (switchStatus)
{
    [_switchButton setOn:YES animated:YES];
}else{
    [_switchButton setOn:NO animated:YES];
}

答案 1 :(得分:0)

您可以将值保存在模型中,或者 - 为了方便您 - 在AppDelegate中,您在之前的问题中建立了连接。注意:您应该了解MVC - 这只是为了让您轻松。 MVC的一个很好的起点是这个答案:Design Pattern - Objective-C - MVC Model View Controller

使用

扩展appDelegate.h
@property double sliderValue;

然后在你的viewController.m工具

- (void)viewDidDissapear {
    MyAppDelegate *appDelegate = (MyAppDelegate *)[[UIApplication sharedApplication] delegate];
    [appDelegate setSliderValue:YourSlider.value];
}

下次执行

时加载它
- (void)viewWillAppear {
    MyAppDelegate *appDelegate = (MyAppDelegate *)[[UIApplication sharedApplication] delegate];
    [yourSlider setValue:appDelegate.sliderValue];
}

不要忘记在viewCOntroller.m文件中导入AppDelegate.h文件。

#import "MyAppDelegate.h"