2011-12-18 621 views
9

Tengo dos vistas, viewA y viewB. Me carga viewB en la parte superior de viewa coniOS eliminación vista

[self.view addSubview: viewB.view]; 

Me wa para eliminar viewB, pero no sé cómo hacerlo. Intenté

[self.view removeFromSuperview]; 

pero esto no está funcionando. ¿Cómo puedo hacer esto?

Respuesta

19

Llame -removeFromSuperview al viewB.view.

+0

probado, aplicación se bloquea con esto: '- [viewB performSelector: withObject: withObject:]: mensaje enviado a la instancia desasignado 0xf568d40' – McDermott

+0

se puede publicar más de su código es difícil? saber que es g haciendo mal sin más contexto. – Sean

+0

Descubrí que el accidente no estaba relacionado con eso. Funciona perfectamente ahora. – McDermott

7

Para eliminar la vista de viewB de su superview, necesita llamar a removeFromSuperview en esa vista.

[viewB.view removeFromSuperview]; 

A partir del UIView class reference.

removeFromSuperview 

desvincula el receptor en su supervista y su ventana, y lo elimina de la cadena de respuesta.

3

Estás en el camino correcto al usar removeFromSuperView. Pero debe enviar el mensaje a la vista que desea eliminar. Del mismo modo Hasta ejemplo

[viewB.view removeFromSuperview]; 

Sin embargo, puede que no tenga un identificador para viewB por el tiempo que desea eliminarlo si no está utilizando la propiedad y sintetizar método. Haría uso de @property y @synthesize. Así que usted puede utilizar:

[self.viewB.view removeFromSuperview]; 

Otra forma es utilizar esto: (suponiendo que su viewB.view es la última vista que agregó a viewA.view

[[self.view.subviews objectAtIndex:(self.view.subviews.count - 1)]removeFromSuperview]; 

Usted puede obtener una lista de todos los subvistas de su viewa por:

NSLog(@"subviews of viewA.view: %@",self.view.subviews); 
+1

FYI puede llamar a 'lastObject' para obtener el último objeto de una matriz (en lugar de' self.view.subviews.count - 1) ' – Rog

+0

Lo aprendí sobre la marcha. Buena información – user523234

+0

Estoy agregando muchas cosas programáticamente, entonces 'removeFromSuperview' es mi elección. – McDermott

Cuestiones relacionadas