Básicamente, quiero eliminar todos los objetos de un UIScrollView y todavía no he encontrado una solución porque un simple comando "removeAllObjects" no funciona. ¿Alguien tiene una idea de cómo hacerlo?iPhone: cómo eliminar todos los objetos de un UIScrollView
Respuesta
Aún más fácil:
[[scrollView subviews] makeObjectsPerformSelector:@selector(removeFromSuperview)];
supongo que tiene el mismo problema con 'makeObjectsPerformSelector' en lo que respecta a que recorre las subvistas mientras modifica la matriz al mismo tiempo. De esta manera es elegante y utilizada por muchos, pero ¿cómo abordar lo que progrmr mencionó anteriormente? – iwasrobbed
Estoy bastante seguro de que makeObjectsPerformSelector: genera una matriz temporal antes de llamar al selector en cada objeto. Si no fuera así, como dices, causaría problemas. – Kalle
La forma más sencilla:
for(UIView *subview in [scrollView subviews]) {
[subview removeFromSuperview];
}
¿Es seguro modificar los contenidos de la matriz mientras se repiten los elementos? Me pregunto ... – progrmr
En general, probablemente no sea la mejor práctica, por lo que es posible que desee configurar una matriz temporal marcada para su eliminación. : P – iwasrobbed
Definitivamente es seguro eliminar las subvistas al enumerar la colección de subvistas de los padres – ohhorob
dos soluciones sería, sin necesidad de retirar las barras de desplazamiento:
agregar una etiqueta a todas sus subvistas, eliminarlos usando esas etiquetas.
Implementación:
lugar esta por encima de su clase
#define XPScrollViewSubviewStartTag 100
Cuando se agrega los objetos
for(NSInteger = 0;i<[viewArray count];i++){
UIView* view = [viewArray objectAtIndex:i];
view.tag = XPScrollViewSubviewStartTag + i;
[scrollView addSubview:view];
}
Cuando más adelante desea eliminar las vistas utilizan
for(UIView* view in [scrollView subviews]){
if(view.tag >= XPScrollViewSubviewStartTag)
[view removeFromSuperview];
}
Crear un UIView encargo clase
Cuando se desea eliminar las vistas
for(id view in [scrollView subviews]){
if(![view isKindOfClass:[CustomView class]])
continue;
//not necessary, but just to make things understandable
CustomView* customView = (CustomView*)view;
[customView removeFromSuperview];
}
solución de Oritm es agradable, pero si usted no quiere preocuparse por el uso de etiquetas, puede eliminar manualmente las vistas que desea eliminar de la vista de desplazamiento Esto supondrá que sabes qué vista eliminar. Por ejemplo, mi ScrollView solamente tiene UILabels así que cuando corro el siguiente:
// This will remove the scrollview but the scrollbars will remain
for (UIView *subview in [self.detailsExpander.scrollView subviews]) {
if ([NSStringFromClass([subview class]) isEqualToString:@"UILabel"])
[subview removeFromSuperview];
}
Esto sólo eliminará todas las etiquetas, pero mantener las barras de desplazamiento (que son vistas de imágenes). Nota: esto no funcionará si desea mantener vistas de imágenes específicas mientras que al mismo tiempo desea mantener las barras de desplazamiento.
- 1. eliminar todos los objetos de una uiview?
- 2. ¿Cómo eliminar todos los objetos de un NSMutableArray?
- 3. cómo eliminar todos los objetos de Core Data
- 4. Cómo eliminar todos los punteros a objetos en java
- 5. iPhone UIScrollView Speed Check
- 6. Eliminar todos los atributos
- 7. ¿Cómo eliminar todos los elementos de ListBox?
- 8. ¿Cómo eliminar todos los artículos de ConcurrentBag?
- 9. iPhone UIScrollView/setContentOffset rareza
- 10. PLSQL - Eliminar todos los objetos de base de datos de un usuario
- 11. ¿Cómo eliminar todos los signos diacríticos de un archivo?
- 12. ¿Cómo eliminar todos los componentes de un JFrame en Java?
- 13. Cómo eliminar una rama y todos los objetos a los que hace referencia
- 14. Magento: cómo eliminar todos los redireccionamientos permanentes
- 15. Cómo eliminar todos los XElements vacíos
- 16. ¿Cómo eliminar todos los objetos a través de una relación de datos centrales?
- 17. ¿Obtiene los valores de desplazamiento UIScrollView actuales en el iPhone?
- 18. Listar todos los objetos de cierta clase
- 19. ¿Cómo eliminar todos los archivos almacenados por una versión anterior de la aplicación de iPhone?
- 20. Cómo eliminar REALMENTE una rama de git (es decir, eliminar todos sus objetos/confirmaciones)?
- 21. Eliminar todos los permisos de directorio
- 22. ¿Cómo podré eliminar los objetos [NSNull Null] de NSMutableArray?
- 23. Eliminar todos los elementos dentro de linearlayout
- 24. NSMutableArray: ¿es más rápido eliminar todos los objetos o iniciar un nuevo NSMutableArray?
- 25. Eliminar todos los elementos de una lista
- 26. Eliminar todos los espacios en blanco de un archivo: Linux
- 27. ¿Cómo ocultar/eliminar la barra de desplazamiento en UIScrollview en iPhone?
- 28. ¿Todos los objetos heredan de NSObject?
- 29. ¿Deberían todos los objetos tener una interfaz y todos los objetos unidos sin apretar?
- 30. eliminar todos los UIButton de la subvista
No elimine todas las subvistas de una 'UISubview'. Sus vistas de indicador de desplazamiento son subvistas. También los eliminarás. Recomiendo colocar sus vistas de contenido en su propio contenedor UIView. (guárdelo como un ivar para facilitar el acceso al agregarlo y eliminarlo) – ohhorob