IPhone eliminar vista sub

Tengo un UINavigationController. En la parte superior derecha tengo un button con un clic del cual tengo que get una vista de tabla desplegable. Creé otra Clase UIViewController, con xib y la agregué como subView a la vista actual. Debería aparecer en el primer clic y desaparecer en el segundo clic. Esto debería suceder para todos los clics (vista abierta y vista cercana). Escribí este código pero no sé a dónde me voy mal. 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 class UIViewController

La key está aquí

 for (UIView *subView in self.view.subviews) 

cada subView es de class UIView y su testing

 isKindOfClass:[TableViewController class] 

está probando para la class TableViewController

Sugiero que una forma de hacerlo sea labelndo las vistas que agregue dinámicamente, con say 99 y luego, en su ciclo, puede identificar esas vistas por su label.

p.ej.

 for (UIView *subView in self.view.subviews) { if (subView.tag == 99) { [subView removeFromSuperview]; } } 

Prueba esto,

 if ([subView isKindOfClass:[UITableView class]]) { [subView removeFromSuperview]; } 

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 sola subvista:

 subView.removeFromSuperview() 

Para eliminar todas las subvenciones:

 for subView in self.subviews as [UIView] { subView.removeFromSuperview() } 

Fuente: ¿Cuál es la mejor manera de eliminar todas las vistas de la vista primaria / súper vista?

Aquí hay algo que debería funcionar de alguna manera: suponiendo que tableView1 es una propiedad @ retenida (si no, entonces tal vez esta respuesta SO sobre técnicas de carga perezosa sea para usted).

 -(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]; } }