0

カウントダウン付きのタイマーがあります。最近のテストでは、ホーム ボタンを押してアプリに戻ると、タイマーがオフになっていることに気付きました (本来よりも少ない秒数しか刻みませんでした)。

アプリを再度開いたときに ViewDid と ViewWill Appear が起動しないことをテストで確認しました。そんなこと知ってる:

- (void)applicationWillEnterForeground:(UIApplication *)application

発火しますが、アクティブだったviewControllerの特定の部分に固有のものにするにはどうすればよいですか?

4

2 に答える 2

3

おそらく、アプリのデリゲートに送信される と がapplicationDidBecomeActive:必要です。applicationWillResignActive:投稿された通知もあります (例: UIApplicationDidBecomeActiveNotification) 聞くことができます。

applicationDidEnterBackground:これらは、たとえばシステム アラートが発生したときにも投稿されます。applicationWillEnterForeground:

詳細については、ライフサイクルに関する Apple ドキュメントを参照してください。

于 2012-01-30T20:58:03.887 に答える
0

上記の質問に回答したように、フォローアップのために。

私はエリックとまったく同じ問題を抱えていたのでapplicationDidBecomeActive:、デリゲートでの使用に関するジェシーの提案を実装しました。さまざまなメソッドがすべてどのように呼び出されているかを確認したかっただけで、次のことがわかりました。

  1. application:didFinishLaunchingWithOptions:期待どおり、最初に呼び出されます。
  2. 次に、メインのView ControllerのviewDidLoad番です。
  3. その後viewWillAppear:、呼び出されます。
  4. アプリケーション デリゲートに戻り、applicationDidBecomeActive:トリガーされます (ここreactivateTimerでは、メイン ビュー コントローラーに実装したメソッドを呼び出します)。
  5. reactivateTimerメソッドが実行されます。
  6. 最後のステップは、メイン ビュー コントローラーの呼び出しです。viewDidAppear:
于 2012-02-16T00:07:52.883 に答える