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

发布于 2024-10-15 19:24:59 字数 201 浏览 2 评论 0原文

我正在尝试从 UIView 中删除所有子视图。我尝试了以下方法没有效果:

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

        }

I am trying to remove all the subviews from a UIView. I tried the following to no effect:

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

        }

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

猫弦 2024-10-22 19:24:59

刚刚测试了这个,它对我有用。 (虽然你的代码对我来说也看起来不错......)

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

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

Just tested this and it worked for me. (Although your code also looks good to me...)

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

If it doesn't work for you, there might be something that prevents the subviews from being removed.

掩于岁月 2024-10-22 19:24:59

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

当您删除 0 处的视图时,子视图数组会缩短一个元素,并且元素 1 在下一次迭代时将变为元素 0。另一方面,你的 i 变量不断增长,所以你最终会跳过视图 1。

The problem with your sample is how you built the loop.

When you remove the view at 0, the Subviews array is one element shorter, and element 1 becomes element 0 on the next iteration. Your i variable on the other hand keeps growing, so you end up skipping view 1.

凉城已无爱 2024-10-22 19:24:59

之后尝试强制刷新视图,或专门在主线程上调用Remove 调用。

Try forcing a refresh of the view afterward, or invoking the Remove call specifically on the main thread.

旧城烟雨 2024-10-22 19:24:59

如果你绝对需要使用 for 循环,这就可以了

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

If you absolutely need to use an for loop, this will do

    for (int i = this.Subviews.Length - 1 ; i > 0  i--)
    {
        this.Subviews[i].RemoveFromSuperview ();
    }
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文