【问题标题】:Monotouch: Remove all subviews from a viewMonotouch:从视图中删除所有子视图
【发布时间】:2011-02-03 07:27:58
【问题描述】:

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

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

        }

【问题讨论】:

    标签: xamarin.ios subview


    【解决方案1】:

    刚刚对此进行了测试,它对我有用。 (虽然你的代码在我看来也不错……)

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

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

    【讨论】:

      【解决方案2】:

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

      当您移除 0 处的视图时,Subviews 数组会短一个元素,并且元素 1 在下一次迭代中变为元素 0。另一方面,您的 i 变量不断增长,因此您最终会跳过视图 1。

      【讨论】:

      • 基于 0 的东西可以解决这个问题,对吧?喜欢while (this.Subviews.Length &gt; 0) { this.Subviews[0].RemoveFromSuperview(); }
      【解决方案3】:

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

      【讨论】:

        【解决方案4】:

        如果您绝对需要使用 for 循环,则可以这样做

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

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2012-06-03
          • 2011-05-05
          • 1970-01-01
          • 2011-01-25
          • 1970-01-01
          • 1970-01-01
          • 2012-03-20
          • 1970-01-01
          相关资源
          最近更新 更多