2012-05-09 4 views
1

iOS5ストーリーボードアプリケーションを使用していて、イニシャルビューコントローラー 'A'で特定のボタンが押されたときにビューコントローラー 'B'をナビゲーションスタックにプッシュするために使用しています。ボタンを押すと、 'B'にはWebサービスから取得されたデータがロードされます。UIViewControllerがストーリーボードに状態を保持していない

ユーザが戻るナビゲーションボタンを押した後、ボタンを押して 'B'に戻ると、Bは完全にリセットされます。ストーリーボードがViewController Bを再作成したことを理解しています。これをどうやって止めるのですか?私はこの問題を解決するための正しいデザインパターンを探しています。

+0

誰か助けてください。 –

答えて

3

これがなぜ発生するのかを明確にするだけです。戻るボタンを押すと、viewController 'B'がスタックからプッシュされ、メモリから削除されます。これを避けるには、AppDelegateのviewController 'B'に対する強力なポインタプロパティを作成する必要があります。次にviewWillAppearで、このプロパティがnullかどうかをチェックし、その値が通常どおりに設定されているかどうかをチェックします。そうでない場合は、既にviewControllerを準備しておき、代わりにそのviewControllerを使用することがわかります。

+0

コントローラAのコントローラBへのポインタを保持するとどうなりますか?私は、App Delegateに多くのコントローラを集中的にリストアップしたくありません。 – sparkFinder

+0

コントローラBがアプリケーション全体に状態を保持するようにするには、プロパティを持つ正しい場所がAppDelegateにあります。あなたがそこで説明したようにすることができますが、コントローラAがスタックから押し出されると、コントローラAとBの両方がメモリから解放されます。 –

関連する問題