我有一个包含少量子视图的视图,我在视图上绘制了一些子图层作为小点。 问题在于删除它们。
我有一个点数组,我知道要删除的索引的索引,现在我想删除根据数组中点的索引添加的子层。
视图的子图层返回一个NSArray图层,但它的层数比我添加的多,当我根据索引删除子图层时,我的View的一些子视图消失了。
谁能告诉我一个好的解决方案?
答案 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,有三种解决方案可供选择。