Estoy creando una aplicación donde agrego una subvista a una vista usando addSubview:
en un IBAction
. De la misma manera, cuando el botón con eso IBAction
se toca nuevamente, se debe llamar removeFromSuperview
a esa subvista agregada en eso IBAction
:
CÓDIGO 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
fuente
fuente
addSubview:
método (que probablemente sea el caso la primera vez), la próxima vez, llegará a la parte else porque la segunda vista ahora es una subvista de la primera. ¿No es lo que estabas intentando hacer? ¿Quizás esté buscando otro mecanismo como presentar un controlador de vista de forma modal?popoverView
es una subvista de rootView (rootViewController). Quiero verificar si está en la pantalla (si tiene rootView como supervista) y si es así, elimínelo o agréguelo si no lo está[self popoverView]
devolviendo un popover recién creado cada vez? no puede agregar una vista "sobre ella" si es la misma vista, agregando una vista que ya no existe. si elpopoverView
método crea uno nuevo cada vez, entonces no siempre estará en la jerarquía de vistaPrueba esto:
fuente
fuente
El equivalente de Swift se verá así:
fuente
Compruebe la supervista de la subvista ...
fuente
Tu condición debería ir como
fuente
isDescendantOfView:
?Aquí usamos dos vistas diferentes. La vista principal es la vista en la que estamos buscando la vista descendiente y verificamos si se agregó a la vista principal o no.
fuente