如何删除当前视图以外的所有子视图

时间:2016-02-23 06:26:41

标签: ios objective-c uiview

每次点击按钮我都会创建一个UIView,但问题是所有其他视图都没有被删除。 它增加了应用程序的内存

3 个答案:

答案 0 :(得分:3)

您可以为UIView个对象设置标记。

UIView *view = [[UIView alloc] initWithFrame:CGRectZero];
view.tag = 2016;
[self addSubview:view];

然后,您可以稍后使用以下代码将其删除:

UIView *view = [self viewWithTag:2016];
[view removeFromSuperview];

您还可以使用属性保留对UIView对象的引用。

@property (nonatomic, strong) UIView *view;

所以你可以很容易地删除它。

答案 1 :(得分:0)

试试这个:

为按钮指定标签(可能是100)。

NSArray *subviews = self.view.subviews; 

for(UIView *subview in subviews) { 
  if(subview.tag != 100) { 
    [view removeFromSuperview]; 
  } 
}

答案 2 :(得分:0)

-removeFromSuperview方法在调用后释放内存,以防万一你的视图没有被其他任何东西保留

e.g。

简单地从超级视图中删除视图可能不足以取消分配它可以具有具有插座连接的视图&使用retain或strong属性声明属性,因此在这种情况下,控制器在从nib文件加载时会保留它,您可能需要释放该视图。

[yourView removeFromSuperview];
self.yourView = nil;
相关问题