2012-05-03 6 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] 동기화] ... 영구 메모리에 현재 사용자 기본값을 씁니다 않습니다. 앱이 시작되면 상태를 읽고 그에 따라 행동합니다. 코드를 보지 않고도 더 많은 것을 얻는 것은 어렵습니다. 희망이 도움이됩니다. – 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 개 주를 보유하고 있으며, 각 상태를 개별적으로 눌러서 버튼을 숨겨서 아래 그림을 보여주기를 바랍니다. 그런 다음 앱을 종료하고 나중에 다시 돌아 오면 버튼은 계속 숨겨져 있습니다. 나는 이것을 가지고 있지만, 시뮬레이터를 다시 시작할 때 아무 버튼도 저장되지 않는다. 어떤 도움을 주셔서 감사합니다. –

관련 문제