2012-05-03 108 views
0

我点击时有一组按钮隐藏显示底层图像。我需要知道保存状态的最佳方式,因此在重新启动时不会恢复为未点击的视图。这可能吗?谢谢。隐藏按钮保存

-(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` 

回答

1
+0

我一直在阅读这篇文章,但对我来说这是没有意义的,因为我需要放置代码。你有什么例子吗?我也需要为每个按钮执行此操作吗?再次感谢。 –

+0

每次有人按下按钮时,都会将状态写入NSUserDefaults并执行[[NSUserDefaults standardUserDefaults]同步] ...,将当前用户默认值写入永久内存。当您的应用程序启动时,您只需读取状态并对其执行操作。没有看到您的代码就很难深入其中。希望这可以帮助。 – pho0

+0

我做错了什么。我可以保存并重新加载,如果我按下我的主页按钮并重新启动应用程序,但如果我回到菜单屏幕,我放松了我的更改。我将代码添加到顶部。我真的希望你能帮助我!再次感谢。 –

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中,您可以获得该字典,并遍历所有值并一次性设置所有可见性。

+0

谢谢你的回复,我想知道你是否可以给我一些例子,说明如何在一段代码中保存所有的按钮状态。我有50个州,我希望用户按每个州隐藏按钮,以显示下面的图片。然后,当他们离开应用程序并稍后返回时,该按钮仍然隐藏。我有这个,但是当我重新启动模拟器时,没有按钮被保存。任何帮助表示赞赏。 –