2010-08-03 5 views
0

Mon application de tabbar a trois onglets, chacun avec sa propre structure de navigation. Plusieurs vues de mon application chargent des données via des appels de service Web. Ces vues enregistrer cette notification afin de savoir quand l'application est active, afin de pouvoir recharger les données:Comment empêcher plusieurs alertes UIAlertView de surgir à la fois?

[[NSNotificationCenter defaultCenter] addObserver:self 
     selector:@selector(reloadView) name:UIApplicationDidBecomeActiveNotification 
     object:NO]; 

Lorsque l'application est activée, ces vues essayer tous de recharger leurs données; Cependant, s'il n'y a pas de connexion Internet, les erreurs sont interceptées et un UIAlert est montré à l'utilisateur. Le problème est que si 3 de ces vues tentent de recharger des données, 3 messages d'alerte apparaissent.

Comment puis-je empêcher plusieurs alertes d'apparaître à l'utilisateur?

J'apprécie toutes vos pensées, idées et suggestions !!

Merci!

Brad

Edit: J'ai essayé de mettre dans mon appDelegate, mais même en utilisant cette méthode, il me semble obtenir plusieurs popups.

-(void)displayAlertWithTitle:(NSString *)title message:(NSString *)message delegate:(id)delegate{ 
UIAlertView *alert = [[UIAlertView alloc] initWithTitle:title message:message delegate:delegate cancelButtonTitle:@"Cancel" otherButtonTitles:@"Retry",nil]; 
[alert show]; 
[alert release]; 

}

Répondre

2

piste Donjon de savoir si une alerte est en cours d'affichage (ou a été rejetée récemment). Il n'y a vraiment pas d'autre moyen.

Si vous collez la fonctionnalité dans votre délégué d'application, alors vous pouvez simplement faire quelque chose comme [(MyAppDelegate*)[UIApplication sharedApplication].delegate displayNetworkFailureDialog].

EDIT: Notez que certaines personnes peuvent désapprouver coller cruft global au hasard dans votre délégué app ...

+0

J'ai essayé l'idée appDelegate, mais je dois encore manquer quelque chose, comme je suis encore obtenir plusieurs popups. Je ne suis pas sûr de savoir comment garder une trace des alertes sur plusieurs viewControllers. Merci! – Brad

+0

Je l'ai eu pour fonctionner en affichant l'alerte dans appDelegate, puis en utilisant une notification pour notifier l'appDelegate chaque fois que l'UIAlertView est fermé. De cette façon, l'appDelegate conserve une trace de l'existence ou non d'une alerte avec une variable booléenne. – Brad

Questions connexes