UIViewController
アプリがバックグラウンドになってから再び前面に表示された後、ビューを変更したいのですが、表示される前にビューを変更したいと思います。-viewWillAppear:
呼び出されないので、どうすればこれを行うことができますか?表示されているViewController- application:didBecomeActive
への参照を取得してから、ビューを変更する必要がありますか?ビューが表示されている間は変更されないことが重要です。
1 に答える
コントローラは、 UIApplicationDidBecomeActiveNotification通知のオブザーバーとして自分自身を登録し、必要に応じて反応することができます。
それだけでは、ビューが表示されているかどうかを保証することはできません。
UIApplicationDelegateプロトコルのドキュメントには、-applicationDidBecomeActive:が呼び出された後に通知が発行されると記載されています。トリガーされたイベントによって、ビューが表示される場合と表示されない場合があります。たとえば、着信が原因でアプリが一時停止された場合、ユーザーが通話を拒否している間、ビューは表示されたままになり、アプリが再びアクティブになったときに表示されたままになることがあります。
おそらく、アプリが非アクティブになった後に実際にバックグラウンドに入ったかどうかを追跡して、再びアクティブになったときに実行するアクションを決定する必要があります。UIApplicationWillEnterForegroundNotification
探している通知のように聞こえますが、それだけでは、アプリが何らかのイベントによって中断されたかどうか、またはユーザーがホームボタンを押してアプリを一時停止したかどうかはわかりません。また、アプリが一時停止され、終了されてから再起動された可能性がある場合も考慮する必要があります。
iOSアプリプログラミングガイドのアプリ状態の変更の管理は、考えられるさまざまな遷移にどのように対応するかを理解するために読む必要があります。