タブ バーとナビゲーション コントローラーを備えた iPhone アプリケーションを開発しました。
今のところ問題なく動作しています。
ここで、終了する前にアプリケーションの状態を保存する必要があります。
6 つのタブがあり、着信があった場合、アプリを再起動すると、最後に選択されたタブが選択されているはずです。
このトピックに関するいくつかの質問を見てきましたが、それらを見てさらに混乱しました。
誰でもこれを行う簡単な方法を教えてもらえますか?
タブ バーとナビゲーション コントローラーを備えた iPhone アプリケーションを開発しました。
今のところ問題なく動作しています。
ここで、終了する前にアプリケーションの状態を保存する必要があります。
6 つのタブがあり、着信があった場合、アプリを再起動すると、最後に選択されたタブが選択されているはずです。
このトピックに関するいくつかの質問を見てきましたが、それらを見てさらに混乱しました。
誰でもこれを行う簡単な方法を教えてもらえますか?
この質問に対する「万能」という正確な答えはありません。アプリケーションの状態を保存する実装は、アプリケーションの構造に大きく依存するため、単一のソリューションが特定のケースに適合する可能性はほとんどありません。
ただし、適切な状態保持ソリューションを開発するための正しい道を歩むための一般的なヒントと指針がいくつかあります。
通常applicationWillTerminate:
、アプリのデリゲートで、またはUIApplicationWillTerminateNotification
他のクラスでリッスンして、状態を保存する操作を実行する必要があります。
NSUserDefaults を見てください。NSUserDefaults を使用して、設定やその他の情報に関連するキー/値のペアを格納できます (NSDictionary に似ていますが、NSUserDefaults には NSCoding を実装するオブジェクトしか格納できません)。NSUserDefaults を使用して状態情報を保存します。1 つの注意点 - 大量のデータを格納するために NSUserDefaults を使用しないでください。これにより、アプリケーションの起動時間が遅くなります (起動時に値が読み込まれるため)。
より具体的なケース...アプリケーション間で選択したタブを保持するだけの場合はapplicationWillTerminate:
、選択したタブのインデックスを保存するために NSUserDefaults を実装して使用する必要があります。次に、applicationDidFinishLaunching:
実装で、その NSUserDefaults キーの存在を確認し、存在する場合は UITabBarController の選択されたインデックスを格納された値に設定します。
たとえば、選択したタブのナビゲーション スタックも復元できるようにする場合は、ナビゲーション スタックを正確に再構築できるように十分な情報を保存する必要があります。NSUserDefaults に格納する必要がある情報は、アプリケーションの構造と、ナビゲーション スタック内のビュー コントローラー階層の可能な反復に非常に固有であるため、一般的な意味で定量化するのは困難です。
アプリケーションが閉じられたときに失われたくない入力済みのユーザーデータを含む、より一般的なナビゲーションスタックを復元する必要がある場合 (ユーザーが何らかの新しいレコードを作成している場合など)、それをお勧めします。アプリのデリゲート レベルでアプリケーションの状態を保存することから離れて、ビュー コントローラー クラスがリッスンUIApplicationWillTerminateNotification
し、独自の状態保存を行うことに集中します。また、終了時にView Controllerごとに保存された情報を使用してナビゲーション階層を復元するためのメカニズムを決定する必要があります。これはより複雑な手法であり、ニーズによっては必要ない場合があります。
残念ながら、この答えは少しあいまいです。特に、より一般的で複雑なケースでは、アプリケーションの構造に大きく依存するため、この質問に対する一般的な解決策はないことを指摘しました。
NSUserDefaults の使用例を次に示します: http://robertcarlsen.net/2009/06/19/overly-simplistic-Saving-state-in-of-for-iphone-847