Je fais une application de test et je l'exécute sur le périphérique. Au frist, tout fonctionne bien. Ensuite, je appuyais sur le bouton Accueil pour quitter, puis appuyez sur l'icône de l'application. Il semble que la viewwillappear n'est pas appelée cette fois. À ma compréhension, la viewwillappear est appelée à chaque fois que la vue apparaît à l'écran, elle est déclenchée par contrôleur de vue de la vue ou en appuyant sur le bouton de la maison puis relancé. p>
3 Réponses :
Selon la documentation: P>
Cette méthode est appelée avant que la vue du destinataire soit sur le point d'être ajoutée à une hiérarchie de vue et avant que toutes les animations soient configurées pour montrant la vue. Vous pouvez remplacer cette méthode pour effectuer des tâches personnalisées associé à l'affichage de la vue. Par exemple, vous pouvez utiliser ceci méthode pour modifier l'orientation ou le style de la barre d'état à Coordonner avec l'orientation ou le style de la vue étant présenté. Si vous remplacez cette méthode, vous devez appeler Super à un moment donné de votre Mise en œuvre. P> blockQuote>
Pour être notifié, lorsque votre demande reprend, vous devez utiliser:
- (vide) ApplicationDidBecomomeactive: (UIAUPLICATION *) Application Code> Cette méthode est implémentée dans votre AppDelegate.M P>
Donc, je devrais copier le code dans ViewWillappear code> à ApplicationDidbecomeactive code>? Cela ne semble pas la bonne façon pour moi ..
Non, mais vous pouvez appeler de ApplicationDidbecomeactive Code> Toute méthode souhaitée.
Suggérez-vous que j'appelle la vue du contrôleur Viewwillappear dans l'ApplicationDidbecomeactive d'Appdelegate's Code>?
Faites une méthode qui reprend vos activités dans la sous-classe UIViewController et appelez simplement cette méthode.
Ajoutez ceci dans votre mode ViewDiDload ()
[[NSNotificationCenter defaultCenter]addObserver:self
selector:@selector(onResume)
name:UIApplicationDidBecomeActiveNotification
object:nil];
C'est la bonne façon de le faire. Il est beaucoup plus propre d'utiliser un observateur quelque part que d'ajouter du code à l'appdelegate. Bon travail!
Voici la syntaxe pour SWIFT:
NotificationCenter.default.removeObserver(self)
J'ai aussi le même problème. Avez-vous plus d'autre avec ça? Tout fonctionne bien lors du premier lancement, mais même après la fin de l'application, tout lancement ultérieur provoque toutes sortes de bogues, tels que ViewWillappear: non licenciement et mes méthodes de déléguement de l'uoinavigationController ne tirent pas. Je suis inquiet...
@ Horseshoe7, Découvrez ceci Stackoverflow.com/Questtions/5277940/...
Thx, mais ce n'est pas le problème. Il semble s'agir d'un problème avec UinavigationController - sur tout lancement ultérieur de l'application, il arrête de transférer la viewwillappear: et ViewDidAppear: aux contrôleurs concernés de sa pile, et plus inquiétant, même si cet objet a un délégué défini, aucun des délégués méthodes incendies non plus.