在iPhone中使用removeFromSuperView有什么用?

2 iphone uiview

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

代码是......

for (UIView *oldViews in cell.contentView.subviews)
{
    [oldViews removeFromSuperview];
}
Run Code Online (Sandbox Code Playgroud)

提前致谢

Fra*_*scu 11

您必须知道在iOS中您正在操纵"视图".视图是UI部分(图像,标签,输入等)或包含层.

在发布开始时,你必须向你的窗口添加一个视图.然后,您可以在视图中添加所需数量的视图.

如果在视图A上添加视图B,则在窗口上添加视图A.

语义是:

  • 视图A是B的超级视图
  • 视图B是A的子视图
  • 视图A是窗口的子视图
  • 窗口是视图A的超视图

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

请注意 :

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

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

回答你的初步问题

for (UIView *oldViews in cell.contentView.subviews)
{
    [oldViews removeFromSuperview];
}
Run Code Online (Sandbox Code Playgroud)

在每个cell.contentView子视图上执行removeFromSuperview方法.因此,旧的视图将从屏幕中删除,但不需要取消分配(它们将被释放,因此retainCount - 1).