1

2 つのビューコントローラーを持つアプリを作成しました。アプリは、カスタム クラス (「MapView」というタイトルの OSViewController) である 2 番目のビューへのセグエ接続を使用して、タイトル画面 (「Title」というタイトルの一般的な UIViewController) に開きます。そのままでは、アプリはバックグラウンド状態に入ると一時停止するため、通常は MapView で中断したところからアプリが開きます。

アプリがアクティブになったときにタイトル画面でアプリを起動するにはどうすればよいか知りたいです。できれば、非アクティブ状態が 1 分以上続くと、タイトル画面が表示されるようにしたいと思います。私が読んでいたことから、これをコード化するために AppDelegate の applicationDidBecomeActive: メソッドで呼び出しを行うようです。applicationDidBecomeActive: メソッドに入れるコードを教えてください (それが適切な場所である場合)非アクティブ状態からアクティブ状態に移行するときに、アプリをタイトル画面に再度開きます。私のアプリはほぼ完成していますが、この問題を修正したいのですが、アプリの状態を扱った経験があまりありません。お時間をいただきありがとうございます。

さらに情報が必要な場合は、お尋ねください。

4

1 に答える 1

0

「didBecomeActive」通知のオブザーバーとしてクラスを登録することもできます。これは、クラスの viewDidLoad または init メソッドに配置する必要があります。

[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(willBecomeActive:) name:UIApplicationDidBecomeActiveNotification object:nil]; 

この場合、willBecomeActive:アプリが再びアクティブになったときに呼び出される、クラスで定義したメソッドです。それは次のようになります。

- (void)willBecomeActive:(NSNotification *)notification {
    if (self.navigationController.topViewController == self) {
        [self.navigationController popToRootViewControllerAnimated:YES];
    }
}

また、これを viewDidUnload メソッドに追加する必要があります

[[NSNotificationCenter defaultCenter] removeObserver:self name:UIApplicationDidBecomeActiveNotification object:nil];

編集: @AMayes のアドバイスに感謝します。この場合、キー/値の監視は必要ないと思います。

于 2013-04-03T21:09:11.610 に答える