100 votes

Vérifier si une sous-vue est dans une vue

Je crée une application où j'ajoute une sous-vue à une vue en utilisant addSubview: sur un IBAction . De la même manière, lorsque le bouton avec cette IBAction est touché à nouveau doit appeler removeFromSuperview sur cette sous-vue ajoutée sur cette IBAction :

CODE PSEUDO

-(IBAction)showPopup:(id)sender 
{
    System_monitorAppDelegate *delegate = (System_monitorAppDelegate *)[[UIApplication sharedApplication] delegate];
    UIView *rootView = delegate.window.rootViewController.view;

    if([self popoverView] is not on rootView) 
    { 
        [rootView addSubview:[self popoverView]];
    } 
    else 
    {
        [[self popoverView] removeFromSuperview];
    }

}

1voto

Saran Points 2996

Votre condition "si" devrait être la suivante

if (!([rootView subviews] containsObject:[self popoverView])) { 
    [rootView addSubview:[self popoverView]];
} else {
    [[self popoverView] removeFromSuperview];

}

0 votes

Il s'agit d'une légère modification de la réponse de Michael Frederick. Donne-t-elle des résultats différents du code de Vincent qui utilise isDescendantOfView: ?

0 votes

Cela donne absolument un résultat différent. Cela ne vérifie que s'il s'agit d'une vue enfant, pas d'une vue petit-enfant ou arrière-petit-enfant, etc.

0voto

shubham Points 505

Ici, nous avons utilisé deux vues différentes. La vue parent est la vue dans laquelle nous recherchons la vue descendante et vérifions si elle a été ajoutée à la vue parent ou non.

if parentView.subviews.contains(descendantView) {
   // descendant view added to the parent view.
}else{
  // descendant view not added to the parent view.
}

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