Monotouch: удалить все подпредставления из вида - PullRequest
8 голосов
/ 03 февраля 2011

Я пытаюсь удалить все подпредставления из UIView.Я попробовал следующее безрезультатно:

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

        }

Ответы [ 4 ]

13 голосов
/ 03 февраля 2011

Только что проверил это и у меня получилось.(Хотя ваш код также выглядит хорошо для меня ...)

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

Если он не работает для вас, возможно, что-то препятствует удалению подпредставлений.

4 голосов
/ 04 февраля 2011

Проблема с вашим образцом заключается в том, как вы построили цикл.

Когда вы удаляете представление в 0, массив Subviews будет на один элемент короче, а элемент 1 становится элементом 0 на следующей итерации. С другой стороны, ваша переменная i продолжает расти, поэтому вы пропускаете представление 1.

0 голосов
/ 27 апреля 2011

Если вам абсолютно необходимо использовать цикл for, это сделает

    for (int i = this.Subviews.Length - 1 ; i > 0  i--)
    {
        this.Subviews[i].RemoveFromSuperview ();
    }
0 голосов
/ 03 февраля 2011

Попробуйте принудительно обновить представление после этого или вызвать вызов Remove специально для основного потока.

...