如何根据与其添加对应的索引删除子层?
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,有三种解决方案可供选择。
【讨论】:
以上是关于如何根据与其添加对应的索引删除子层?的主要内容,如果未能解决你的问题,请参考以下文章
Spring Boot Elasticsearch7.6.2实现创建索引删除索引判断索引是否存在获取/添加/删除/更新索引别名单条/批量插入单条/批量更新删除数据递归统计ES聚合的数据