在iphone中,removeFromSuperView有什么用途?

在iphone中,removeFromSuperView有什么用途?,iphone,uiview,Iphone,Uiview,在我的程序中,如果我在cellForRowAtIndexPath(Tableview)中放置下一行,滚动就可以了。否则,线路将崩溃。我想知道这个代码做了什么 代码是 for (UIView *oldViews in cell.contentView.subviews) { [oldViews removeFromSuperview]; } 提前谢谢那就简单了 “cell.contentView.subview”中的每个UIView(因此cell.contentView的子视图)都将被删

在我的程序中,如果我在cellForRowAtIndexPath(Tableview)中放置下一行,滚动就可以了。否则,线路将崩溃。我想知道这个代码做了什么

代码是

for (UIView *oldViews in cell.contentView.subviews)
{
    [oldViews removeFromSuperview];
}
提前谢谢

那就简单了

“cell.contentView.subview”中的每个UIView(因此cell.contentView的子视图)都将被删除


它将从superview中删除它们,如果retainCount为0,可能会调用dealloc方法。

它只是从cell.contentView中删除所有子视图。

每个UIView类或子类都可以通过addSubView:,维护其视图层次结构,这些代码将从cell.contentView中删除所有子视图


但是UITableViewCell的实例经常被重复使用。这些代码将删除其所有子视图,因此如果需要重用,它必须重新构建其所有子视图。

您必须知道,在iOS中,您正在操作“视图”。视图是UI部件(图像、标签、输入等)或包含层

在启动开始时,必须向窗口添加视图。然后,您可以在视图上添加任意多的视图

如果在视图a上添加视图B,并在窗口上添加视图a

语义是:

  • 视图A是B的超视图

  • 视图B是视图a的子视图

  • 视图A是窗口的子视图

  • 该窗口是视图的超级视图

    因此,如果您在B上调用removeFromSuperview,您将在A上删除B(并显示)

请注意:

添加子视图(addSubview:)时,将对添加的视图执行保留

删除视图(removeFromSuperview:或removeSubviewAtIndex:)时,将对删除的视图执行释放

来回答你最初的问题

for (UIView *oldViews in cell.contentView.subviews)
{
    [oldViews removeFromSuperview];
}
对每个cell.contentView子视图执行removeFromSuperview方法。 因此,旧视图将从屏幕上删除,但不必取消分配(它们将被释放,以便重新计数-1)