私のアプリの概要
- ナビゲーション コントローラーを使用している間は、対応する XIB MainWindow.xib にあります。アプリ デリゲートでルート VC として設定されます。
-CategoriesVC はテーブル VC であり、ルート VC のトップ VC です。
-BooksCategoryVC (カテゴリ内のすべての本) は、CategoriesVC から何かを選択した後にプッシュされる別のテーブル vc です。
-BookScrollVC.m は、本を選択した後にテキストを表示するスクロール VC です。
コードの説明
1) アプリのデリゲートで、 shouldSaveApplicationState と shouldRestoreApplicationState を設定して YES を返すようにしました
2) CategoriesVC は MainWindow XIB にあり、IB と .m に復元識別子を設定しました。restoreClass を self に設定し、viewControllerWithRestoreIdentifierPath を実装しました。
3) BooksCategory には独自の XIB があり、復元プロトコルを実装しています。
4) VC がコードでインスタンス化されることを除いて、3) と同じ。ここには XIB はありません。
フロー
アプリケーションを起動します。最後の VC (BookScrollVC) までナビゲートします。
シミュレーターでホームボタンを押すと:
encodeRestorableStateWithCoder
CategoriesVC で呼び出され、他の VC には進みません。復元プロトコルを実装しているすべての VC を経由するべきではないですか?
Xcode からアプリを再起動すると、実際viewControllerWithRestorationIdentifierPath
には CategoriesVC 内の のみが呼び出されます。
不明な点やコードを確認したい場合はお知らせください