L'actuel UIViewController
sur l'écran doivent répondre aux notifications push des APN, en définissant des vues de badges. Mais comment puis-je obtenir le UIViewController
en méthode application:didReceiveRemoteNotification
: de AppDelegate.m
?
J'ai essayé d'utiliser self.window.rootViewController
pour obtenir l'affichage actuel UIViewController
il peut s'agir d'un UINavigationViewController
ou un autre type de contrôleur de vue. Et je découvre que le visibleViewController
propriété de UINavigationViewController
peut être utilisé pour obtenir le UIViewController
sur l'écran. Mais que faire s'il ne s'agit pas d'une UINavigationViewController
?
Toute aide est appréciée ! Le code correspondant est le suivant.
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
}