2017-10-17 16 views
1

세그먼트 화 된 컨트롤러가 애플리케이션을 닫은 후 다시 열면 위치를 저장하지 않는다는 문제가 있습니다.세그먼트 화 된 컨트롤러 위치 저장

내 코드는 다음과 당과 같습니다

- (void)viewDidLoad { 
    [super viewDidLoad]; 

    [self.segmentedControlButtonStyle addTarget:self action:@selector(changeButtonStyle:) forControlEvents:UIControlEventValueChanged]; 

} 

- (IBAction)changeButtonStyle:(id)sender { 

    NSUserDefaults *sharedDefaults = [[NSUserDefaults alloc] initWithSuiteName:@"group.number.application"]; 
    NSInteger selectedSegmentedControlerIndex = self.segmentedControlButtonStyle.selectedSegmentIndex; 

    if (sharedDefaults) { 
     [sharedDefaults setInteger: selectedSegmentedControlerIndex forKey:@"MySelectedButtonStyleKey"]; 
     [sharedDefaults synchronize]; 
    } 
} 

재미있는 것은 내가 다시 열고 닫을 신청 후 변경 계속됩니다 버튼 스타일을 변경하면 내가 위에서 제공 NSUserDefaults 실제로 때문에 방법에서 올바른 인덱스를 절약한다는 것입니다 사실로 볼 수는 있지만 세그먼트 된 컨트롤러 자체가 올바른 세그먼트를 표시하지 않기 때문입니다.

각 세그먼트 변경 후 동기화 중이지만 여전히 분할 된 컨트롤러가 기본 위치를 유지하므로이 문제가 발생하는지 잘 모르겠습니다. 보기에서

+0

을 설정하기 위해 추가해야합니다로드 않았고 당신은 그 저장된 인덱스 위치를 설정합니까? –

+0

viewDidLoad에서 userDefaults를 읽고 올바른 색인을 segmentedcontrol로 설정해야합니다. – Kerberos

+0

세그먼트 컨트롤의 선택된 상태를 설정하기 위해 실제로'''MySelectedButtonStyleKey'''를 사용하는 코드를 게시 할 수 있습니까? –

답변

1

는 코드가 저장된 세그먼트

NSUserDefaults *sharedDefaults = [[NSUserDefaults alloc] initWithSuiteName:@"group.number.application"]; 
int mySegment = [sharedDefaults integerForKey:@"MySelectedButtonStyleKey"]; 

if(mySegment) { 
    self.segmentedControlButtonStyle.selectedSegmentIndex = mySegment; 
} 
+1

대단히 감사합니다. 제 문제가 해결되었습니다. –

+0

답변을 수락하면 좋을 것 같습니다 :) –