如何根据与其添加对应的索引删除子图层?

时间:2012-01-24 12:59:51

标签: ios calayer

我有一个包含少量子视图的视图,我在视图上绘制了一些子图层作为小点。 问题在于删除它们。

我有一个点数组,我知道要删除的索引的索引,现在我想删除根据数组中点的索引添加的子层。

视图的子图层返回一个NSArray图层,但它的层数比我添加的多,当我根据索引删除子图层时,我的View的一些子视图消失了。

谁能告诉我一个好的解决方案?

2 个答案:

答案 0 :(得分:0)

使用标签。在每个视图上设置一个标记,其值映射到数组索引,然后在子视图数组中按标记而不是它们的索引删除视图。

我建议使用偏移号,因此标签将是100,101,102等而不是0,1,2,因为0是所有视图的默认标记,因此删除标记为零的视图将导致相同的问题你已经有了。

以下是您需要的代码:

#define TAG_OFFSET 100

//add the views
for (int i = 0; i < [array count]; i++)
{
    UIView *view = //create subview based on array index
    view.tag = TAG_OFFSET + i;
    [containerView addSubview:view];
}

//remove view at index 5
[[containerView viewWithTag:TAG_OFFSET + 5] removeFromSuperview];

答案 1 :(得分:0)

尼克的回答虽然对于子视图是正确的,却没有回答Amogh的问题 - 这是如何找到子图层的。子视图的一个很好的答案发布在Remove imageView sublayer from TableViewCell,有三种解决方案可供选择。