2012-02-21 2 views
1

私はストーリーボードベースのios5プロジェクトに取り組んでいますが、これまでのところうまくいきましたが、終了時にユーザーの状態を保存して、アプリケーションに戻ったときに、ストーリーボードのどこに残したのか。どのように私はストーリーボードのUIViewControllerにジャンプし、ナビゲーション階層を保持しますか?

私が理解しているのは、ストーリーボードをナビゲートするとUIViewControllerのスタックが作成されるため、現在のコントローラを閉じると、表示するものがわかるようになります。しかし、アプリケーションが起動するときに私がストーリーボード内のUIViewControllerの1つにジャンプすると、その履歴、コントローラのスタックがバックトラックすることはありません。何もしなければ、2つのコントローラがストーリーボードのある時点で同じコントローラに接続すると、どちらのコントローラに戻るかわからなくなります。

これに対処する適切な方法は何ですか?私はちょうどユーザーが中断した時点までストーリーボードを通過し、アニメーションがNOに設定された各UIViewControllerを提示します。 (もしそうなら、その情報を保存する最良の方法は何ですか?これを手助けできる方法/クラスがありますか、それともストーリーボードに保存する方法がありますか?)

+0

:ここ

はあなたを助けるかもしれないいくつかのリンクです。 ios5を使用すると、ユーザーがアプリを離れるときにプログラムがバックグラウンドに移動し、アプリを再度選択したときに中断したところに戻ります。それ以上に問題はありますか? –

+0

それを元に状態を復元するだけでは不十分ですが、正しいですか?ユーザーが状態が失われたデバイスを再起動した場合など。 –

+0

通常、ユーザーはアプリを含むすべてのものをリセットするために再起動します。ユーザーがデータを失わない限り、アプリの状態を保存する必要はありません。潜在的なデータ損失がある場合は、アプリがバックグラウンドに置かれているかどうかを検出して保存する必要があります。 –

答えて

0

1つのオプションはNSUserDefaultsUIViewControllersの正確なインスタンスをディスクに正確に保存することはできず、メモリにあるかのように取得することはできません。何が起こるかは、あなたは何とかしなければなりません。キー/値、あなたの興味を持っているそれぞれのviewControllerを識別し、その状態を保存します。また、状態を保存する各要素をキーし、NSUserDefaultsを使用して保存する必要があります。 exmapleについては

、あなたはこのような階層構造を持っているとしましょう:

HomeView> ListOfNotes> NoteAtIndexPath:X

、ユーザーがNoteAtIndexPath閲覧している:Xを、そしてまたのは、フォントサイズが動的であると仮定しましょう、ユーザーは閲覧時にそれを大きくしたり小さくしたりすることができます。次の2つのキーを定義することができますIndexOfLastNoteViewedLasFontSizeViewedをし、それらを保存します。

[[NSUserDefaults standardUser] setInteger:5 forKey:IndexOfLastNoteViewed]; 
[[NSUserDefaults standardUser] setFloat:17.0 forKey:LasFontSizeViewed]; 

アプリケーションが再び起動すると、あなたが鍵をチェックし、HomeViewにプログラムで閲覧することができます> ListOfNotes> NoteAtIndexPath:5。あなたは何もする必要はありません

+0

これは私が心配している個々のUIViewControllerのデータの保存状態ではありません。それは、私が直接、アプリケーションの起動時に正しいUIViewControllerを起動して、階層が元のままであるようにする方法です。 –

+0

コードの観点から見ると、階層はそのままです。あなたのポイントは、ユーザーが最後に見た状態を復元する方法です。答えは、ユーザーが変更できる設定を記録し、アプリに戻るときに変数を設定する必要があることです。ユーザーが階層を変更することはできません。それはあなたのデザインに組み込まれています。ユーザーの観点から見ると、彼はある視点から別の視点にジャンプしていますが、プログラマチックに彼がそこにいかに存在しているかを知っています。 NSUserDefaultsにそれを保存することによって、あなたはランドマークを作成して戻ることができます。 – Canopus

関連する問題