Pregunta

Hola tengo un UIScrollView y tengo un objeto de UIImageView dentro del UIScrollView. Comienzo de la aplicación. entonces desplazarse hacia la derecha en la ScrollView y los cambios ScrollView pero no puedo ver el siguiente objeto UIImageView que puedo añadir a - (void) scrollViewDidEndDecelerating: (UIScrollView *) ScrollView. antes de agregar el siguiente objeto quito el anterior ... lo que está mal?

para eliminar objeto i uso

UIImageView *l;

    for (NSInteger ko=0; ko<[[scroll subviews] count]; ko++){
        if ([[[scroll subviews] objectAtIndex:0] isKindOfClass:[UIImageView class]]){

            //This code never gets hit
            l=[[scroll subviews] objectAtIndex:0];
            [l removeFromSuperview];
            l=nil;

        }
    }

Luego agregar el siguiente objeto

[scroll addSubview: imageView];

elimino el objeto anterior, ya que mi aplicación se bloquea cuando i añadir 110 imágenes en la ScrollView así que tengo que gestionar la memoria supongo. Esta es la razón por quito el objeto anterior.

Cualquier ayuda por favor!

¿Fue útil?

Solución

Un par de sugerencias para conseguir que en el camino correcto:

  1. Si usted cree que la memoria es un problema, el problema de partición. Por ejemplo añadir / eliminar 10 imágenes a la vez.

  2. La propiedad de etiqueta de un UIView es su mejor amigo cuando se trata de evitar problemas con el mantenimiento de sus propios bucles. Puede configurar una etiqueta específica para sus UIImageViews cuando los necesite, y luego buscar la etiqueta usando [UIView viewWithTag: tag]; Funciona de forma recursiva.

  3. st3fan lleva a un muy buen punto sobre la modificación concurrente. De una manera general bueno evitar que es añadir a un "array eliminación" y luego removeObjectsInArray.

Otros consejos

El primer problema que veo es que se recorre a través de una matriz a la vez que modificarlo. También el índice del bucle ko no se utiliza en cualquier lugar. Siempre elemento de agarre 0.

¿Qué hay de:

NSArray* subviews = [[NSArray alloc] initWithArray: scroll.subviews];
for (UIView* view in subviews) {
    if ([view isKindOfClass:[UIImageView class]]) {
         [view removeFromSuperview];
    }
}
[subviews release];

¿No es exactamente lo que estamos tratando de hacer?

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top