0

UILocalNotifications を使用するアプリがあります (ただし、質問は PushNotifications にも関連します)。ユーザーがローカル通知を受信すると、アプリの状態と通知アラートでの選択に応じて、特定の viewController を提示したいと考えています。問題は、現在、セグエまたはモーダルViewControllerを介して「プッシュされた」viewControllerにある可能性があり、現在、ユーザーが可能なブランチ内のどこにいるかを追跡していないことです。

このような混合プレゼンテーション モードのアプリを処理するためのデザイン パターンや標準的な方法があるかどうか疑問に思っています。特に、ブレッドクラム システムをセットアップしなくても、どれがアクティブな ViewController であるかを判断する組み込みの方法がある場合。これは、たとえば、localNotification の結果として呼び出される viewController をユーザーが既に表示している場合に問題になります。

私の必要性/説明が少し混乱していることに気づきました。誰かがさらに情報を必要とする場合は、これを編集して更新します。

4

1 に答える 1

0

OK - Apple docs View Controller Programming Guide for iOS: Presenting View Controllers from Other View Controllersを通じて解決策があると思います

表示されたビュー コントローラーのチェーン内の各ビュー コントローラーには、チェーン内でそれを囲む他のオブジェクトへのポインターがあります。つまり、別のView Controllerを提示するPresented View Controllerは、presentingViewControllerとpresentingViewControllerの両方のプロパティに有効なオブジェクトを持っています。これらの関係を使用して、必要に応じてビュー コントローラーのチェーンをトレースできます。たとえば、ユーザーが現在の操作をキャンセルした場合、最初に表示されたビュー コントローラーを閉じることで、チェーン内のすべてのオブジェクトを削除できます。つまり、View Controller を閉じると、その View Controller だけでなく、表示されているすべての View Controller も閉じられます。

したがって、チェーン内の最初のモーダル viewController を閉じることで、モーダル viewController のチェーンをキャンセルできます。

以下を使用して、現在表示されているモーダル viewController があるかどうかを判断できます。

 self.window.rootViewController.presentedViewController

プロパティが null の場合、モーダル viewController は現在表示されていません。そして、完全を期すために(ハッキング..)、presentedViewControllerにpresentedViewControllerなどがあるかどうかをテストできます。

self.window.rootViewController.presentedViewController.presentedViewController
于 2012-07-16T23:04:18.073 に答える