vez todos para otros los limpiar golpe eliminar cómo contactos como cache borrar app apartado iphone objective-c subview

iphone - todos - ¿Cómo eliminar subvista específica?



cómo eliminar todos los contactos de mi iphone (3)

Cree un ivar que le ofrezca una referencia al nuevo viewController o solo a la vista. Iré por el controlador de la vista aquí

Añadir una propiedad y sintetizarla.

// .h @property (nonatomic, strong) Location *location; // .m @synthesize location = _location;

Ahora cuando crees la ubicación, establece el ivar

Location *location = [[Location alloc] initWithNibName:@"Location" bundle:[NSBundle mainBundle]]; self.location = location; [self.subView addSubview:location.view];

Ahora despues para quitarlo.

[self.location.view removeFromSuperview];

Nota al margen

En general, es un camino doloroso agregar la vista de un controlador de vista a la vista de otro como este. Para leer un poco acerca de esto, vea Abusando a UIViewControllers

Su nombre de Location probablemente no sea excelente, puede ser más apropiado llamarlo algo como LocationViewController o similar. La nomenclatura coherente de esta manera permite que cualquier otra persona (o tu futuro) pueda leer y comprender fácilmente que se trata de un controlador de vista sin abrir el encabezado.

He añadido subview (ViewController) a mi ViewController:

Location *location = [[Location alloc] initWithNibName:@"Location" bundle:[NSBundle mainBundle]]; [self.subView addSubview:location.view];

¿Cómo puedo eliminar esta subvista?

Sé que para eliminar todas las subvistas es:

for (UIView *subview in [self.view subviews]) { [subview removeFromSuperview]; }


Simplemente puede establecer una etiqueta única para su vista que la identifique. Y luego cuando quieras quitarlo. Use el método de viewWithTag:(NSInteger)tag para recuperarlo y eliminar solo este.

Location *location = [[Location alloc] initWithNibName:@"Location" bundle:[NSBundle mainBundle]]; location.tag = 8001; // 8001 is an exemple [self.subView addSubview:location.view];

Y entonces

UIView * v = [self.subView viewWithTag:8001]; if (nil != v) { [v removeFromSuperview]; }


Rápido y sucio: asigne una etiqueta a su vista, para que luego pueda identificarla:

Location *location = [[Location alloc] initWithNibName:@"Location" bundle:[NSBundle mainBundle]]; UIView *viewToAdd = location.view; viewToAdd.tag = 17; //you can use any number you like [self.view addSubview:viewToAdd];

Luego, para quitar:

UIView *viewToRemove = [self.view viewWithTag:17]; [viewToRemove removeFromSuperview];

Una alternativa más limpia, más rápida, más fácil de leer y de mantener sería crear una variable o propiedad para acceder a la vista:

En la interfaz:

@property (nonatomic, weak) UIView *locationView;

En la implementación:

Location *location = [[Location alloc] initWithNibName:@"Location" bundle:[NSBundle mainBundle]]; UIView *viewToAdd = location.view; self.locationView = viewToAdd; [self.view addSubview:viewToAdd];

Luego, para quitar:

[self.locationView removeFromSuperview];

Dicho esto, preste atención a las advertencias de los comentaristas sobre cómo jugar con las Vistas de otros ViewControllers. Lea sobre la contención de ViewController si desea hacerlo.