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

コードに基づいて、アプリの読み込み時に保存された値をデフォルトから引き出して何かを行うという非常に重要なステップを見逃しています。

次のようなものが必要です。

-(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 に答える
1

ええ、NSUserDefaults はまさにこの目的のために使用されます。

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

于 2012-05-03T20:01:38.040 に答える