切换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"