2 votes

push viewcontroller utilisant UINavigationController appelle parfois viewDidAppear : et viewWillAppear :

Lorsque l'on pousse un viewcontroller utilisant UINavigationController dans la vue :

  1. Ce qui est nécessaire pour qu'il se déclenche viewDidAppear : et viewWillAppear : ?
  2. Qu'est-ce qui fait qu'il ne déclenche pas viewDidAppear : et viewWillAppear : ?

Nous avons du mal à savoir si ces méthodes sont déclenchées ou non.

6voto

cduhn Points 11229

UINavigationController appelle ces méthodes directement sur le contrôleur qui est poussé lorsque vous appelez pushViewController:animated : De même, UITabBarController appelle ces méthodes directement lorsque vous changez d'onglet, et UIViewController les appelle lorsque vous utilisez presentModalViewController:animated :. Elles sont également appelées lorsque la vue d'un contrôleur de vue est ajoutée à une fenêtre. Je n'ai jamais vu ces méthodes ne pas être appelées dans ces contextes spécifiques.

Gardez à l'esprit que ces méthodes ne sont appelées que sur le contrôleur qui est poussé ou présenté dans ces contextes spécifiques. Ces méthodes ne seront pas appelées, par exemple, si vous ajoutez la vue de votre contrôleur de vue en tant que sous-vue d'une vue autre que la UIWindow. La documentation d'Apple indique que les contrôleurs de vues sont destinés à être utilisés uniquement avec des vues plein écran, qui sont généralement présentées à l'aide de l'une des méthodes décrites ci-dessus. Il est possible d'ignorer les conseils d'Apple et d'associer un contrôleur de vue à une vue secondaire d'un autre contrôleur de vue, mais vous devrez déléguer manuellement les appels viewWill/DidAppear/Disappear du contrôleur de vue conteneur au contrôleur imbriqué.

0voto

Matt Points 1482

Vérifiez que vous avez exactement le bon nom de la fonction, par exemple :

- (void)viewWillAppear:(BOOL)animated

Par exemple, si vous oubliez de déclarer le paramètre d'animation, votre fonction ne sera pas appelée.

Cela peut sembler évident, mais j'ai fait cette erreur et depuis le premier po

-1voto

Daniel Points 16707

Les deux méthodes doivent être appelées lorsque vous êtes sur le point d'afficher une vue.... juste avant qu'elle n'affiche viewWillAppear est appelé, juste après qu'elle affiche viewDidAppear est appelé...de toute façon vous pouvez toujours vous référer à la documentation de UIViewController ici Uiviewcontroller ref

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X