从集合视图中删除项目后的标签问题
Posted
技术标签:
【中文标题】从集合视图中删除项目后的标签问题【英文标题】:Tag issue after deletion of Item from Collection View 【发布时间】:2014-02-10 12:43:55 【问题描述】:我在我的应用中实现了一个集合视图。
集合单元格包含一个名为删除项目的按钮。 删除一个项目后,标签不会更新,所以,如果我删除第二个项目,那么它将删除它旁边的一个,即标签。
我的代码如下:
- (UICollectionViewCell *)collectionView:(UICollectionView *)cv cellForItemAtIndexPath:(NSIndexPath *)indexPath
static NSString *CellIdentifier = @"GradientCell";
UICollectionViewCell *cell = [cv dequeueReusableCellWithReuseIdentifier:CellIdentifier forIndexPath:indexPath];
UIButton *btn_close=[UIButton buttonWithType:UIButtonTypeCustom];
[btn_close setFrame:CGRectMake(50, 00, 18, 18)];
[btn_close setBackgroundImage:[UIImage imageNamed:@"close.png"] forState:UIControlStateNormal];
[btn_close addTarget:self action:@selector(delete_image:) forControlEvents:UIControlEventTouchUpInside];
btn_close.tag=indexPath.row;
return cell;
-(void)delete_image:(UIButton*)sender
[self.col_view performBatchUpdates:^
[arr_images removeObjectAtIndex:sender.tag];
NSIndexPath *indexPath =[NSIndexPath indexPathForRow:sender.tag inSection:0];
[self.col_view deleteItemsAtIndexPaths:[NSArray arrayWithObject:indexPath]];
completion:^(BOOL finished)
];
【问题讨论】:
【参考方案1】:简单的答案是不要使用该行作为您的标签!! 您应该将任何其他信息保存在“标签”中,以后可以将其转换为行号。例如,您可以将图像保存在“arr_images”中,理想情况下,您应该存储指向该单元格所表示的对象的指针。
当你想删除对象时,你应该使用该对象重新构建索引路径
xxxx = [arr_images indexOfObject:sender.tag];
NSIndexPath *indexPath =[NSIndexPath indexPathForRow:xxxx inSection:0];
[self.col_view deleteItemsAtIndexPaths:[NSArray arrayWithObject:indexPath]];
【讨论】:
以上是关于从集合视图中删除项目后的标签问题的主要内容,如果未能解决你的问题,请参考以下文章
如何从 SqlAlchemy 中的多对多集合中删除所有项目?
如何在要删除的单元格上使用 longtapGesture 从集合视图中删除 uicollectionviewcell?迅速