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

2 回答 2

1

是的,NSUserDefaults 正是用于此目的:

https://developer.apple.com/library/ios/#documentation/Cocoa/Reference/Foundation/Classes/NSUserDefaults_Class/Reference/Reference.html

于 2012-05-03T20:01:38.040 回答
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 中,您可以获得该字典,并遍历它的所有值并一次性设置所有可见性。

于 2012-05-04T01:36:40.310 回答