web-dev-qa-db-fra.com

UIView est apparu?

Je me demande, est-il possible d'obtenir un délégué ou quelque chose, lorsqu'un UIView particulier a été affiché à l'écran?

38
nosuic

Essayez-les:

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

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

- didMoveToSuperview

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

- viewDidAppear:(BOOL)animated
20

Version rapide. Dans votre classe UIView:

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

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

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

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

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 lors de sa première présentation. Ce n'est donc que parfois ce que vous voulez. Cela a fonctionné pour mon cas. Assurez-vous également d'appeler super! =)

0
Ben