在uicollectionview中删除选定的单元格

时间:2014-04-15 22:36:48

标签: ios objective-c uicollectionview uicollectionviewcell

我在uicollectionviewcell中放了一个按钮,当按下该按钮时,它以编程方式将单元格设置为选中。

- (void) deleteItem:(id)sender
{
    self.selected = YES;
    [self.cellOptionsDelegate deleteItem];
}

然后委托给uicollectionviewcontroller删除所选的项目。

- (void) deleteItem
{
    NSArray* selectedItemsIndexPaths = [self.collectionView indexPathsForSelectedItems];

    // Delete the items from the data source.
    [self.taskArray removeObjectAtIndex:[[selectedItemsIndexPaths objectAtIndex:0] row]];

    // Now delete the items from the collection view.
    [self.collectionView deleteItemsAtIndexPaths:selectedItemsIndexPaths];

}

但是,当我使用uicollectionview方法indexPathsForSelectedItems获取所选项时,它没有看到我选择了该项并且列表为空。我正在使用印刷机为另一种功能选择委托方法,所以我希望按照我上面解释的内容做一些事情。有没有办法让这项工作或更好的方式通知控制器按下单元格中的按钮被绑定到特定索引路径上的单元格?

谢谢。

3 个答案:

答案 0 :(得分:2)

只需从单元格的deleteItem方法发送一个单元格指针

- (void) deleteItem:(id)sender
{
    self.selected = YES;
    [self.cellOptionsDelegate deleteItem:self];
}

并将uicollectionviewcontroller的方法更改为

- (void) deleteItem:(UICollectionViewCell*)cellToDelete
{
    NSIndexPath indexPathToDelete = [self indexPathForCell: cellToDelete];

    // Delete the items from the data source.
    [self.taskArray removeObjectAtIndex:[indexPathToDelete row]];

    // Now delete the items from the collection view.
    [self.collectionView deleteItemsAtIndexPaths:@[indexPathToDelete]];

} 

不要忘记在* .h文件中更新'(void)deleteItem:(UICollectionViewCell *)cellToDelete'声明。

答案 1 :(得分:1)

通过委托方法发送单元格并使用它来解决:

    NSIndexPath* indexPath = [self.collectionView indexPathForCell:cell];

答案 2 :(得分:0)

  

动画:

[self.collectionView performBatchUpdates:^ {
      [_array removeObject:file];            
      [self.collectionView deleteItemsAtIndexPaths:@[indexPath]];
} completion:nil];