Je fais une application où j'ajoute un sous - vue à une vue à l' aide addSubview:
sur un IBAction
. De la même manière, lorsque le bouton avec qui IBAction
est touché à nouveau doit appeler removeFromSuperview
cette sous-vue ajoutée à cela 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];
}
}
ios
cocoa-touch
uiview
uikit
pmerino
la source
la source
addSubview:
méthode (ce qui est probablement le cas la première fois), la prochaine fois, vous atteindrez la partie else car la deuxième vue est maintenant une sous-vue de la première. N'est-ce pas ce que vous essayiez de faire? Vous recherchez peut-être un autre mécanisme comme la présentation d'un contrôleur de vue de manière modale?popoverView
est une sous-vue de rootView (rootViewController). Je veux vérifier s'il est à l'écran (s'il a rootView comme superview) et si c'est le cas, supprimez-le ou ajoutez-le si ce n'est pas le cas[self popoverView]
renvoie une nouvelle popover à chaque fois? il ne peut pas ajouter une vue "dessus" s'il s'agit de la même vue, en ajoutant une vue qui existe déjà est interdite. si lapopoverView
méthode en crée une nouvelle à chaque fois, elle ne sera toujours pas dans la hiérarchie des vuesEssaye ça:
la source
la source
L'équivalent Swift ressemblera à ceci:
la source
Vérifiez la vue de la sous-vue ...
la source
Votre condition si devrait aller comme
la source
isDescendantOfView:
?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 est ajoutée à la vue parent ou non.
la source