47 votes

UIView est-il apparu ?

Je me demande, y a-t-il un moyen d'obtenir un délégué ou quelque chose, quand un UIView a été affiché à l'écran ?

34voto

buxik Points 104

Version rapide. Dans votre classe UIView, procédez comme suit :

 override func willMove(toWindow newWindow: UIWindow?) {
    super.willMove(toWindow: newWindow)

    if newWindow == nil {
        // UIView disappear
    } else {
        // UIView appear
    }
}

28voto

Max Points 12661

Essayez ceux-ci :

 – didAddSubview:
– willRemoveSubview:
– willMoveToSuperview:
– didMoveToSuperview
– willMoveToWindow:
– didMoveToWindow
- viewDidAppear:

24voto

Si vous gérez votre logique directement dans l'UIView, utilisez :

 - didMoveToSuperview

Si vous gérez votre logique dans un UIViewController, utilisez :

 - viewDidAppear:(BOOL)animated

8voto

Jacob Relkin Points 90729

Si vous gérez le UIView via un UIViewController , alors vous pouvez utiliser la méthode -viewDidAppear:

 - (void) viewDidAppear:(BOOL) animated {
   //do stuff...
   [super viewDidAppear:animated];
}

-2voto

Ben Points 121

Une autre façon de savoir quand un contrôle est à l'écran est de sous-classer la vue ou le contrôle et de remplacer drawRect ...

Cependant, il est appelé lorsqu'il est dessiné et pas seulement lorsqu'il est affiché pour la première fois. Donc c'est seulement parfois ce que vous voulez. Cela a fonctionné pour mon cas. Assurez-vous d'appeler super aussi! =)

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