2016-12-20 10 views
1

私はチャットアプリケーションに取り組んでいます。私はすべてのビューコントローラのアプリケーション状態を保存したい。状態の保存と復元方法iOSでストーリーボードを使用していますか?

アプリ状態保存するための私のコード:

+ (UIViewController *)viewControllerWithRestorationIdentifierPath:(NSArray *)identifierComponents coder:(NSCoder *)coder 
{ 
MoreController *vc = nil; 
UIStoryboard *storyboard = [coder decodeObjectForKey:UIStateRestorationViewControllerStoryboardKey]; 
if (storyboard) 
{ 
     vc = (MoreController *)[storyboard instantiateViewControllerWithIdentifier:@"MoreController"]; 
     vc.restorationIdentifier = [identifierComponents lastObject]; 
     vc.restorationClass = [MoreController class]; 
} 
return vc; 
} 

- (void)encodeRestorableStateWithCoder:(NSCoder *)coder 
{ 
     [coder encodeObject:self.view forKey:@"save"]; 
     [coder encodeObject:_btnoiwii forKey:@"save"]; 

     [coder encodeObject:_tblMore forKey:kUnsavedEditStateKey]; 
      [super encodeRestorableStateWithCoder:coder]; 
} 

- (void)decodeRestorableStateWithCoder:(NSCoder *)coder 
    { 
    self.view = [coder decodeObjectForKey:@"save"]; 
    _btnoiwii= [coder decodeObjectForKey:@"save"]; 

    _tblMore = [coder decodeObjectForKey:kUnsavedEditStateKey]; 
    [super decodeRestorableStateWithCoder:coder]; 

    } 

は、私は、アプリケーションの状態をコードするがデコードできないことができています。アプリケーションデリゲートクラスで追加しましたshouldRestoreApplicationState,willEncodeRestorableStateWithCoder

iOSのアプリケーションの状態を保存して復元するには、適切な解決策を教えてください。

+0

ありがとうございました。 –

+0

iOSでアプリケーションの状態を保存および復元する方法を教えてください –

+0

** self.view **と** _ btnoiwii **に同じキーを使用するのはなぜですか? –

答えて

0

テーブルビュー全体を保存して、コントローラのスーパービューをそのように表示しないでください。 UIKitがView Controllerを復元すると、自動的にすべてのビューが復元されます。データソースを必ず保存し、デコード時にはテーブルビューを再ロードしてください。

あなたのtableViewのインデックスを復元したい場合は、このプロトコルに準拠する必要があり、UIDataSourceModelAssociationと、これらのメソッドを実装します。indexPathForElementWithModelIdentifiermodelIdentifierForElementAtIndexPath

はまた、あなたがナビゲーションを回復していることを確認してくださいビューコントローラがプッシュされる場所にスタックします。

関連する問題