在我的程序中,如果我将下面的行放在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上调用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).
| 归档时间: |
|
| 查看次数: |
6991 次 |
| 最近记录: |