Monotouch:从视图中删除所有子视图

问题描述:

我想从UIView中删除所有子视图。我试过以下几点没有效果:Monotouch:从视图中删除所有子视图

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

     } 

刚刚测试过这个,它对我有用。 (虽然你的代码对我来说也很好看......)

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

如果它不适合你,可能有些东西会阻止子视图被删除。

尝试强制刷新视图,或者在主线程上特别调用Remove调用。

您的示例的问题是您如何构建循环。

当您在0处移除视图时,子视图数组缩短一个元素,元素1在下一次迭代中变为元素0。在另一方面你我变量不断增加,所以你最终跳过视图1.

+1

东西从零开始可以解决的是,对?像'while(this.Subviews.Length> 0){this.Subviews [0] .RemoveFromSuperview(); }` – riha 2011-02-09 11:15:08

如果你绝对需要使用for循环,这会做

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