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

11

我试图从一个UIView中删除所有的子视图。我尝试了以下方法,但没有效果:

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

        }
4个回答

15

我刚测试了这个方法,对我有效。(尽管你的代码看起来也很不错...)

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

如果这对你不起作用,可能有一些东西防止了子视图被移除。


4
你的示例存在问题,问题在于你构建了一个循环。
当你移除第0个视图时,Subviews数组会缩短一个元素,而元素1将在下一次迭代中变为元素0。相反,你的i变量却不断增加,因此你最终会跳过视图1。

1
有点基于0的方法可以解决这个问题,对吧?比如 while (this.Subviews.Length > 0) { this.Subviews[0].RemoveFromSuperview(); } - riha

0
如果你非常需要使用 for 循环,这个代码可以实现。
    for (int i = this.Subviews.Length - 1 ; i > 0  i--)
    {
        this.Subviews[i].RemoveFromSuperview ();
    }

0

尝试在之后强制刷新视图,或者在主线程上明确调用Remove方法。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接