2012-05-03 50 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個州,我希望用戶按每個州隱藏按鈕,以顯示下面的圖片。然後,當他們離開應用程序並稍後返回時,該按鈕仍然隱藏。我有這個,但是當我重新啓動模擬器時,沒有按鈕被保存。任何幫助表示讚賞。 –