J'utilise Segue modal (sans contrôleur de navigation) pour se déplacer entre viewController A et viewController B comme ceci:Objectif c - Détecte vue actuelle de appDelegate
viewA *first = [self.storyboard instantiateViewControllerWithIdentifier:@"viewA"];
[self presentViewController:first animated:YES completion:nil];
Et pour revenir en arrière:
[self dismissViewControllerAnimated:YES completion:nil];
Maintenant, je veux savoir à partir de AppDelegate si A ou B est la vue actuelle en ce moment. Le problème est quand je vérifie
[(AppDelegate *)[[UIApplication sharedApplication] delegate] window]
la réponse est toujours vue A - le premier.
J'ai essayé de définir la vue actuelle chaque fois que je suis en utilisant Segue modal comme ceci:
viewA *first = [self.storyboard instantiateViewControllerWithIdentifier:@"viewA"];
[self presentViewController:first animated:YES completion:^
{
[[(AppDelegate *)[[UIApplication sharedApplication] delegate] window] setRootViewController:first];
}];
Mais il causer quelques bugs (comme incapable d'utiliser « dismissViewControllerAnimated »), et il est impossible travailler comme ça dans toutes les sections d'un grand projet à plusieurs endroits.
Comment devrais-je travailler avec ça? Et comment devrais-je détecter la vue actuelle de manière plus appropriée?
J'ai un jeu. La viewA est le menu principal et viewB est le jeu lui-même. Je souhaite mettre le jeu en pause chaque fois que l'application passe en arrière-plan (applicationWillResignActive). donc j'ai besoin de connaître la vue actuelle pour appeler la méthode de pause ou pas (parce que si je suis au menu principal ou quelque chose d'autre je n'ai pas besoin de l'appeler). c'est un des exemples. Dans toutes mes applications que je suis en utilisant uniquement Segue modal et quand j'ai besoin d'appeler des méthodes de la appDelegate, je dois savoir ce qui est la vue actuelle. Voici comment je travaille, mais peut-être que c'est faux.Donc, si je fais quelque chose de mal, je voudrais savoir :) –
@AsiGivati C'est une raison très réelle. Une meilleure solution est donnée [ici] (http://stackoverflow.com/questions/589598/how-to-react-to-applicationwillresignactive-from-anywhere). – michaelsnowden
Génial! fonctionne parfaitement avec NSNotificationCenter :) –