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

Posted

技术标签:

【中文标题】如何根据与其添加对应的索引删除子层?【英文标题】:How to remove a sublayer based on an index corresponding to their addition? 【发布时间】:2012-01-24 12:59:51 【问题描述】:

我有一个视图,里面有几个子视图,我在视图上绘制了一些子层作为小点。 问题是在删除它们时。

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

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

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

【问题讨论】:

【参考方案1】:

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

我建议使用偏移量,因此标签将是 100、101、102 等而不是 0、1、2,因为 0 是所有视图的默认标签,因此删除带有标签 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];

【讨论】:

【参考方案2】:

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

【讨论】:

以上是关于如何根据与其添加对应的索引删除子层?的主要内容,如果未能解决你的问题,请参考以下文章

如何将子层与 UIView 一起移动?

Spring Boot Elasticsearch7.6.2实现创建索引删除索引判断索引是否存在获取/添加/删除/更新索引别名单条/批量插入单条/批量更新删除数据递归统计ES聚合的数据

如何在 Swift 中调整视图中的子层大小?

渐变子层不透明度

Python数据分析

复合数据类型,英文词频统计