Frage

Hallo ich eine UIScrollView haben, und ich habe ein Objekt von UIImageView innerhalb des UIScrollView. Ich starte die App. dann scrollen i nach rechts an der Scrollview und die Scrollview ändert, aber ich kann nicht das nächste UIImageView Objekt sieht, dass ich hinzufügen - (void) scrollViewDidEndDecelerating: (UIScrollView *) Scroll. i entfernen Sie die vorherigen, bevor ich das nächste Objekt hinzufügen ... was ist falsch?

Objekt entfernen i verwenden

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;

        }
    }

fügen Sie dann i das nächste Objekt

[scroll addSubview: Imageview];

ich das vorherige Objekt entfernen, weil meine app stürzt ab, wenn ich 110 Bilder in der Scrollview hinzufügen, damit ich Speicher verwalten müssen, denke ich. Dies ist, warum ich das vorherige Objekt entfernen.

Wer Hilfe bitte!

War es hilfreich?

Lösung

Ein paar Vorschläge, die Sie auf dem richtigen Weg zu bekommen:

  1. Wenn Sie glauben, dass der Speicher ein Problem, Partition das Problem. Zum Beispiel Add / 10 Bilder gleichzeitig entfernen.

  2. Die Tag-Eigenschaft eines UIView ist Ihr bester Freund, wenn Sie Probleme mit Ihrem eigenen Loops zu vermeiden versuchen, zu halten. Sie können einen bestimmten Tag für Ihre UIImageViews gesetzt, wenn Sie sie benötigen, und dann für die Tag-Suche mit [UIView viewWithTag: tag]; Es funktioniert rekursiv.

  3. st3fan bringt einen sehr guten Punkt, um die gleichzeitige Änderung auf. In der Regel eine gute Möglichkeit zu vermeiden, dass es zu einer „Lösch Array“ hinzufügen und dann removeObjectsInArray.

Andere Tipps

Erstes Problem, das ich sehe, ist, dass Sie über ein Array sind Looping, während sie auch ändern. Auch Ihr ko Schleifenindex ist nicht überall verwendet. Sie immer greifen Punkt 0.

Was ist mit:

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

Ist das nicht genau das, was Sie versuchen zu tun?

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top