[解決済み] AppDelegate.mで画面上に現在表示されているUIViewControllerを取得する。
質問
現在の
UIViewController
は、APNからのプッシュ通知に応答するために、バッジビューを設定する必要があります。しかし、どのようにして
UIViewController
というメソッドで
application:didReceiveRemoteNotification
の
AppDelegate.m
?
私は
self.window.rootViewController
を使って、現在表示されている
UIViewController
である可能性があります。
UINavigationViewController
であったり、他の種類のビューコントローラーであったりします。そして、私は、その
visibleViewController
のプロパティが
UINavigationViewController
を利用することで
UIViewController
を画面上に表示させることができます。しかし、もしそれが
UINavigationViewController
?
どんな助けでも感謝します! 関連するコードは以下の通りです。
AppDelegate.m
...
- (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo {
//I would like to find out which view controller is on the screen here.
UIViewController *vc = [(UINavigationViewController *)self.window.rootViewController visibleViewController];
[vc performSelector:@selector(handleThePushNotification:) withObject:userInfo];
}
...
ViewControllerA.m
- (void)handleThePushNotification:(NSDictionary *)userInfo{
//set some badge view here
}
どのように解決するのですか?
この場合
rootViewController
は、コントローラが
UINavigationController
:
UIViewController *vc = self.window.rootViewController;
ルートビューコントローラがわかれば、あとはUIをどのように構築したかによりますが、コントローラ階層を移動する方法を見つけることができるかもしれません。
アプリの定義方法についてもう少し詳しく教えていただければ、もう少しヒントを与えることができるかもしれません。
編集中です。
もし、一番上の ビュー (ビューコントローラではない) が必要な場合は
[[[[UIApplication sharedApplication] keyWindow] subviews] lastObject];
このビューは見えないかもしれないし、サブビューのいくつかに覆われているかもしれませんが...
また、UIに依存しますが、これは役に立つかもしれません...
関連
-
[解決済み】ウィンドウ階層にないビューを持つUIViewControllerでUIViewControllerを表示しようとする
-
[解決済み] Cocoapodsの使用時にXcodeの警告を無視する
-
[解決済み] UINavigationControllerに右ボタンを追加する方法は?
-
[解決済み] APNSの.pemファイルを作成する?
-
[解決済み] Xcode 4.2 - '...' の宣言は、この関数の外では表示されません 警告
-
[解決済み] UISearchDisplayController/UISearchBarでNSFetchedResultsController(CoreData)をフィルタリングする方法
-
[解決済み] cocoaアプリケーションのinfo plistにある「bundle display name」と「bundle name」の違いは何ですか?
-
[解決済み] CALayer setNeedsDisplayInRect:] の暗黙のアニメーションを無効にする。
-
[解決済み] position: iPadとiPhoneで固定が効かない。
-
[解決済み] iPhone 5 CSSメディアクエリ
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] UIViewController のビューが表示されているかどうかを確認する方法
-
[解決済み] UITextViewのキーボードをリターンキーで解除するには?
-
[解決済み】@try - Objective-Cのcatchブロック
-
[解決済み] UITableViewCellのサブビューがセルを選択すると消えてしまう
-
[解決済み] アプリのプッシュ通知設定をリセットする
-
[解決済み] UITableViewのセクション間のスペースを小さくする
-
[解決済み] drawRectを使うか使わないか(drawRect/Core Graphicsとsubview/imagesをいつ使うか、なぜ使うか)?
-
[解決済み] viewWillAppear:と-viewDidAppear:の違いは何ですか?
-
[解決済み] UIWebViewの背景がクリアカラーに設定されているが、透明になっていない
-
[解決済み] Mac OS Xのスタティック・ライブラリ(.a)のターゲット・アーキテクチャはどのように決定するのですか?