切换ViewControllers时的UISwitch / UISlider值

你将如何保持一个UISwitch或UISlider的价值,以便当你离开并返回到ViewController时,它将具有相同的价值,因为你留在它?

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

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

添加与您的swichbutton相关的操作

.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]; } 

您可以将值保存在模型中,或者 – 为了使您更容易 – 在您的AppDelegate中,您在前一个问题中build立了连接。 注意:您应该了解MVC – 这只是为了方便您。 MVC的一个好的起点是这个答案: devise模式 – Objective-C – MVC模型视图控制器

用你的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"