【发布时间】:2011-02-03 07:27:58
【问题描述】:
我正在尝试从 UIView 中删除所有子视图。我尝试了以下没有效果:
for (int i = 0; i < this.Subviews.Length; i++)
{
this.Subviews[i].RemoveFromSuperview ();
}
【问题讨论】:
标签: xamarin.ios subview
我正在尝试从 UIView 中删除所有子视图。我尝试了以下没有效果:
for (int i = 0; i < this.Subviews.Length; i++)
{
this.Subviews[i].RemoveFromSuperview ();
}
【问题讨论】:
标签: xamarin.ios subview
刚刚对此进行了测试,它对我有用。 (虽然你的代码在我看来也不错……)
foreach (UIView view in tableView.Subviews) {
view.RemoveFromSuperview();
}
如果它不适合你,可能有一些东西会阻止子视图被删除。
【讨论】:
您的示例的问题在于您如何构建循环。
当您移除 0 处的视图时,Subviews 数组会短一个元素,并且元素 1 在下一次迭代中变为元素 0。另一方面,您的 i 变量不断增长,因此您最终会跳过视图 1。
【讨论】:
while (this.Subviews.Length > 0) { this.Subviews[0].RemoveFromSuperview(); }
之后尝试强制刷新视图,或在主线程上专门调用 Remove 调用。
【讨论】:
如果您绝对需要使用 for 循环,则可以这样做
for (int i = this.Subviews.Length - 1 ; i > 0 i--)
{
this.Subviews[i].RemoveFromSuperview ();
}
【讨论】: