我点击时隐藏了一组按钮,显示基础图像。我需要知道保存状态的最佳方法,所以重新启动时它们不会恢复到未被忽略的视图。这可能吗?谢谢。
-(IBAction)Act1 {
Act1Button.hidden = YES;
}
-(IBAction)De1 {
Act1Button.hidden = NO;
}
- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil
{
self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
if (self) {
// initialization
}
return self;
}
- (IBAction)savedata:(id)sender
{
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
[defaults setValue:@"myValue" forKey:@"mykey"];
[defaults synchronize];
}
- (void)viewDidLoad
{
NSUserDefaults *userDefaults = [NSUserDefaults standardUserDefaults];
if (![userDefaults valueForKey:@"mykey"]) {
[userDefaults setValue:@"myValue" forKey:@"mykey"];
NSLog(@"setting value");
}
[userDefaults synchronize];
}
- (void)viewDidUnload
{
[super viewDidUnload];
// Release any retained subviews of the main view.
}
- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation
{
return (interfaceOrientation == UIInterfaceOrientationPortrait);
}
@end
'@interface testViewController : UIViewController
{
IBOutlet UIButton *Act1Button;
IBOutlet UIButton *De1Button;
}
@property (retain, nonatomic) IBOutlet UIButton *Act1Button;
@property (retain, nonatomic) IBOutlet UIButton *De1Button;
- (IBAction)Act1;
- (IBAction)De1;
-(IBAction)savedata:(id)sender;
@end`
答案 0 :(得分:1)
是的,NSUserDefaults完全用于此目的:
答案 1 :(得分:1)
根据您的代码,您错过了在应用加载并对其执行操作时将保存的值从默认值中拉回来的非常重要的步骤。
你应该有更多这样的东西:
-(IBAction)Act1 {
Act1Button.hidden = YES;
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
[defaults setValue:Act1Button.hidden forKey:@"act1buttonState"];
}
- (void)viewDidLoad {
NSUserDefaults *userDefaults = [NSUserDefaults standardUserDefaults];
Act1Button.hidden = [userDefaults valueForKey:@"act1buttonState"];
}
这样,每次按下按钮时都会存储状态更改,而不是需要单独的按钮进行保存(可能您需要将保存移动到每个按钮动作调用的自己的方法中)。此外,当您稍后再次加载视图时,它将获得先前保存的状态,并将按钮的可见性设置为匹配。
这个简单的代码可以让你单独进行,所以你应该考虑在NSUserDefaults中存储一个NSDictionary,它保存所有按钮的状态。在viewDidLoad中,您可以获取该字典,并迭代其所有值,并一次性设置所有可见性。