Question

Bonjour j'ai un UIScrollView et j'ai un objet de UIImageView à l'intérieur du UIScrollView. Je commence l'application. alors je défilement vers la droite au scrollview et les changements de ScrollView, mais je ne peux pas voir le prochain objet UIImageView que j'ajouter à - (void) scrollViewDidEndDecelerating: (UIScrollView *) ScrollView. avant d'ajouter l'objet suivant je supprimer le précédent ... ce qui est faux?

i pour effacer un objet utilise

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;

        }
    }

puis-je ajouter l'objet suivant

[défiler addSubview: imageView];

je supprimer l'objet précédent parce que mes application se bloque quand j'ajouter 110 images au scrollview donc je dois gérer la mémoire, je suppose. Voilà pourquoi je supprimer l'objet précédent.

Aide Toute personne s'il vous plaît!

Était-ce utile?

La solution

Quelques suggestions pour vous mettre sur la bonne voie:

  1. Si vous croyez que la mémoire est un problème, partitionner le problème. Par exemple ajouter / supprimer 10 images à la fois.

  2. La propriété de l'étiquette d'un UIView est votre meilleur ami en essayant d'éviter de maintenir des problèmes avec vos propres boucles. Vous pouvez définir une balise spécifique pour vos UIImageViews lorsque vous en avez besoin, puis recherchez la balise en utilisant [UIView viewWithTag: tag]; Il fonctionne de manière récursive.

  3. st3fan apporte un très bon point sur la modification simultanée. En général, une bonne façon d'éviter est d'ajouter un « tableau de suppression », puis removeObjectsInArray.

Autres conseils

Le premier problème que je vois est que vous bouclez un tableau tout en le modifiant. De plus, votre index de boucle de ko est utilisée nulle part. Vous prenez toujours 0 point.

Qu'en est-il:

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

est-ce pas exactement ce que vous essayez de faire?

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top