NSCoder
을 사용하여 UINavigationBar
뒤로 화살표를 사용하여 주 메뉴로 앞뒤로 이동할 때 사용자 입력을 유지할 수있는 방법이 있는지 궁금합니다. 현재 백그라운드/종료/재시작 중에이 데이터를 유지하기 위해 NSCoder
을 사용 중이며 NSCoder
과 NSUserDefaults
의 조합으로 인해 예측할 수없는 결과가 발생합니다. 때로는 두 가지 유형의 복원이 모두 작동하지만 때로는 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];
}
. 어떤 도움이라도 대단히 감사하겠습니다! 감사.