varios - Iphone eliminar vista secundaria
cómo eliminar todos los contactos de mi iphone (4)
Versión Swift
Esta respuesta es para aquellos que no están familiarizados con Objective-C. Es un poco más general que la pregunta.
Para eliminar una única subvista:
subView.removeFromSuperview()
Para eliminar todas las subvistas:
for subView in self.subviews as [UIView] {
subView.removeFromSuperview()
}
Fuente: ¿Cuál es la mejor manera de eliminar todas las vistas de la vista principal / super vista?
Tengo un UINavigationController. En la parte superior derecha tengo un botón al hacer clic en el cual tengo que obtener una vista de tabla desplegable. Creé otra Clase UIViewController, con xib y la agregué como subvista a la vista actual. Debería aparecer en el primer clic y desaparecer en el segundo clic. Esto debería ocurrir para todos los clics (vista abierta y vista cercana). Escribí este código pero no sé dónde me estoy equivocando. alguien por favor ayuda
-(void)modalTableView
{
tableView1 = [[TableViewController alloc] initWithNibName:@"TableViewController" bundle:nil];
for (UIView *subView in self.view.subviews)
{
if ([subView isKindOfClass:[TableViewController class]])
{
[subView removeFromSuperview];
}
else
{
[self.view addSubview:tableView1.view];
}
}
}
que me estoy perdiendo aqui?
EDIT: TableViewController es el nombre de mi clase UIViewController
Aquí hay algo que debería funcionar de alguna manera, suponiendo que tableView1 es una propiedad @ retenida (si no, tal vez this respuesta SO sobre técnicas de carga diferida sea para ti).
-(void)modalTableView
{
if (tableView1 != nil)
{
tableView1 = [[TableViewController alloc] initWithNibName:@"TableViewController" bundle:nil];
}
if (tableView1.view.superview == nil)
{
[self.view addSubview:tableView1.view];
} else
{
[tableView1.view removeFormSuperview];
}
}
La pista está aquí
for (UIView *subView in self.view.subviews)
cada subView es de clase UIView y tu prueba
isKindOfClass:[TableViewController class]
está probando la clase TableViewController
Sugeriría que una forma de hacerlo sería etiquetando las vistas que agrega dinámicamente, digamos 99, y luego en su ciclo puede identificar esas vistas por su etiqueta.
p.ej.
for (UIView *subView in self.view.subviews)
{
if (subView.tag == 99)
{
[subView removeFromSuperview];
}
}
Prueba esto,
if ([subView isKindOfClass:[UITableView class]])
{
[subView removeFromSuperview];
}