0

NSCoder을 사용하여 UINavigationBar 뒤로 화살표를 사용하여 주 메뉴로 앞뒤로 이동할 때 사용자 입력을 유지할 수있는 방법이 있는지 궁금합니다. 현재 백그라운드/종료/재시작 중에이 데이터를 유지하기 위해 NSCoder을 사용 중이며 NSCoderNSUserDefaults의 조합으로 인해 예측할 수없는 결과가 발생합니다. 때로는 두 가지 유형의 복원이 모두 작동하지만 때로는 BG/Term/RS 복원이 작동하지 않고 기기에 동일한 동일한 코드를로드하는 경우가 있습니다. NSUserDefaults 코드가 주석 처리되면 BG/Term/RS 복원이 매번 작동합니다.NSCoder를 사용하여보기 간 복원 (viewWillAppear/viewWillDisappear)

내 복원 요구 사항 모두에 대해 NSCoder을 사용할 수 있는지 알고 싶습니다. 그렇다면 해당 코드는 어떻게 보일 것입니까? 이는

-(void)encodeRestorableStateWithCoder:(NSCoder *)coder { 
    // start level text 
    [coder encodeObject:_startLevel.text forKey:@"startText"]; 

    // stop level text 
    [coder encodeObject:_stopLevel.text forKey:@"stopText"]; 
} 

-(void)decodeRestorableStateWithCoder:(NSCoder *)coder { 
    // start level text 
    _startLevel.text = [coder decodeObjectForKey:@"startText"]; 

    // stop level text 
    _stopLevel.text = [coder decodeObjectForKey:@"stopText"]; 
} 

이 내가 현재 앞뒤로 내 메뉴와 기본보기 사이에 데이터를 유지하기 위해 사용하고있는 NSUserDefaults 번호 및 :

내가 BG/기간/RS 복원을 위해 사용하고 무엇인가 내가 이상적으로 NSCoder 솔루션으로 대체하고 싶습니다 : 나는 행운과 함께 며칠이 문제를 진압하고있다

- (void)viewWillDisappear:(BOOL)animated { 
    [super viewWillDisappear:animated]; 

    // start level 
    [[NSUserDefaults standardUserDefaults] setObject:_startLevel.text 
               forKey:@"startLevelRestore"]; 
    // stop level 
    [[NSUserDefaults standardUserDefaults] setObject:_stopLevel.text 
               forKey:@"stopLevelRestore"]; 
    [[NSUserDefaults standardUserDefaults] synchronize]; 
} 

- (void)viewWillAppear:(BOOL)animated { 
     [super viewWillAppear:animated]; 

     // start level 
     [_startLevel setText:[[NSUserDefaults standardUserDefaults] 
            objectForKey:@"startLevelRestore"]]; 

     // stop Level 
     [_stopLevel setText:[[NSUserDefaults standardUserDefaults] 
            objectForKey:@"stopLevelRestore"]]; 

     [[NSUserDefaults standardUserDefaults] synchronize];  
    } 

. 어떤 도움이라도 대단히 감사하겠습니다! 감사.

답변

0

decodeRestorableStateWithCoder에서 UI 개체를 설정하는 대신 멤버 변수를 사용하십시오.

그런 다음 viewWillAppear : NSUserDefault의 값을 사용하도록 설정되어 있으면 멤버 변수를 사용하십시오.