2012-05-03 24 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

うん、NSUserDefaultsは、この目的のために正確に使用されている:あなたのコードに基づいて

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

+0

私はそれを読んできましたが、コードを置く必要がある場所には意味がありません。例はありますか?また、ボタンごとにこれを行う必要がありますか?再度、感謝します。 –

+0

誰かがボタンを押すたびに、NSUserDefaultsに状態を書き込み、現在のユーザーのデフォルトを永続メモリに書き込む[[NSUserDefaults standardUserDefaults] synchronize]を実行します。あなたのアプリが起動すると、あなたはその状態を読み、それに基づいて行動します。あなたのコードを見ることなくそれ以上に入るのは難しいです。お役に立てれば。 – 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"]; 
} 

あなたは状態変更]ボタンが押されているすべての時間を記憶している。この方法ではなく、保存するために別のボタンを必要とするよりも(おそらくあなたが移動したい:

あなたはより多くのこのような何かを持っている必要があります各ボタンアクションが呼び出す独自のメソッドを保存します)。また、ビューを後でもう一度ロードすると、以前に保存された状態が取得され、ボタンの視界が一致するように設定されます。

この単純なコードは個別に行うため、NSDictionaryをすべてのボタンの状態を保持するNSUserDefaultsに格納することを検討する必要があります。 viewDidLoadでは、その辞書を取得してそのすべての値を繰り返し、すべての可視性を一度に設定できます。

+0

あなたの返事をありがとう、コードの1つのセクションにすべてのボタンの状態を保存する方法の例を私に与えることができるかどうか疑問に思っていました。私は50州を持っている、私は個々の状態を個別にボタンを隠して、下の画像を表示するには、ユーザーにしたいと思います。その後、アプリケーションを終了して後で戻ると、ボタンはまだ隠されています。私はこれを持っていますが、シミュレータを再起動すると、ボタンは保存されません。どんな助けもありがとうございます。 –

関連する問題