11 Stimmen

Monotouch: Alle Unteransichten aus einer Ansicht entfernen

Ich versuche, alle Unteransichten aus einer UIView zu entfernen. Ich habe das Folgende versucht, ohne Erfolg:

        for (int i = 0; i < this.Subviews.Length; i++)
        {
            this.Subviews[i].RemoveFromSuperview ();

        }

15voto

riha Punkte 2250

Ich habe das gerade getestet und es hat funktioniert. (Obwohl Ihr Code sieht auch gut für mich...)

foreach (UIView view in tableView.Subviews) {
  view.RemoveFromSuperview();
}

Wenn es bei Ihnen nicht funktioniert, kann es sein, dass etwas das Entfernen der Unteransichten verhindert.

4voto

miguel.de.icaza Punkte 32614

Das Problem bei Ihrem Beispiel ist, wie Sie die Schleife aufgebaut haben.

Wenn Sie die Ansicht bei 0 entfernen, ist das Array Unteransichten um ein Element kürzer, und Element 1 wird bei der nächsten Iteration zu Element 0. Ihre i-Variable hingegen wächst weiter, so dass Sie am Ende die Ansicht 1 überspringen.

1 Stimmen

Mit etwas, das auf 0 basiert, könnte man das umgehen, oder? Zum Beispiel while (this.Subviews.Length > 0) { this.Subviews[0].RemoveFromSuperview(); }

0voto

jbehren Punkte 780

Versuchen Sie, danach eine Aktualisierung der Ansicht zu erzwingen oder den Remove-Aufruf speziell auf dem Hauptthread aufzurufen.

0voto

Odd Morten Punkte 21

Wenn Sie unbedingt eine for-Schleife verwenden müssen, genügt dies

    for (int i = this.Subviews.Length - 1 ; i > 0  i--)
    {
        this.Subviews[i].RemoveFromSuperview ();
    }

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X