我想知道是否有一種方法來保持用戶輸入時來回導航到我的主菜單使用UINavigationBar
後退箭頭使用NSCoder
。我目前使用NSCoder
在後臺/終止/重啓過程中維護此數據,NSUserDefaults
維護視圖之間的數據,但NSCoder
和NSUserDefaults
的組合給出了不可預知的結果。有時,這兩種恢復工作,但有時BG/Term/RS恢復不起作用,並且我正在討論在我的設備上加載相同的相同代碼。當NSUserDefaults
代碼被註釋掉時,每次BG/Term/RS恢復工作。使用NSCoder恢復視圖(viewWillAppear/viewWillDisappear)
我想知道是否有可能使用NSCoder
來滿足我所有的恢復需求,如果是的話,那麼代碼將會是什麼樣子。
這是我在用的BG /學期/ RS恢復:
-(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
代碼,並我會非常喜歡的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];
}
我一直在爭奪這個問題了幾天,沒有運氣。任何幫助將不勝感激!謝謝。