1

私はios5用のストーリーボードベースのプロジェクトに取り組んでおり、これまでのところうまく機能していますが、ユーザーが終了したときにユーザーの状態を保存して、アプリに戻ったときに元の場所にジャンプできるようにしたいと考えています彼らが去ったときの絵コンテ。

私の理解では、ストーリーボードをナビゲートすると、UIViewControllers のスタックが作成されるため、現在のコントローラーを閉じると、どのコントローラーを表示するかがわかります。しかし、アプリの起動時にプログラムでストーリーボードの UIViewControllers の 1 つにジャンプすると、バックトラックするためのその履歴、コントローラーのスタックはありません。少なくとも、ストーリーボードのある時点で 2 つのコントローラーが同じコントローラーに移行した場合、どちらに戻ればよいかわかりません。

これに対処する適切な方法は何ですか?ユーザーが中断したポイントまでストーリーボードを通過し、各 UIViewController のアニメーションを NO に設定して、ユーザーが使用していたアニメーションに到達するまで表示しますか? (もしそうなら、その情報を保存する最良の方法は何ですか?これを支援できるメソッド/クラスはありますか?または、ストーリーボードを通じてそれらを保存する独自の方法を展開していますか?)

4

1 に答える 1

0

1 つのオプションはNSUserDefaultsを使用することです。UIViewControllersの正確なインスタンスをディスクに正確に保存して、メモリ内にあるかのように取得することはできません。何が起こるかというと、キー/値など、なんらかの方法で、関心があり、状態を保存したい各ビューコントローラーを特定する必要があります。また、状態を保存する各要素にキーを設定し、 を使用して保存する必要がありますNSUserDefaults

たとえば、次のような階層があるとします。

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] を参照できます。

ここにあなたを助けるかもしれないいくつかのリンクがあります:

于 2012-02-21T18:00:59.220 に答える