UICollectionView 删除选定的单元格

Posted

技术标签:

【中文标题】UICollectionView 删除选定的单元格【英文标题】:UICollectionView removing selected cells 【发布时间】:2014-04-10 13:21:42 【问题描述】:

我想删除UICollectionView中选中的单元格。

@property (weak, nonatomic) IBOutlet UICollectionView *cardTable;
@property (strong, nonatomic) NSMutableArray *cardTableArry; // of Card and datamodel

您可以使用数组来获取它们的路径

NSArray *indexPaths = [[self cardTable] indexPathsForSelectedItems];

你不能[[self cardTable] removeObjectsAtIndexes: indexPaths]; 因为您需要NSIndexSet

有没有办法将NSArray *indexPaths 转换为NSIndexSet 矿石我需要吗 做一些不同的事情以获得我想要的东西

我想将数组转换成NSIndexSet

[[self cardTableArry] deleteItemsAtIndexPaths: [[self cardTable] indexPathsForSelectedItems]]; 

【问题讨论】:

deleteItemsAtIndexPaths: 不能使用什么?您是否还要从数据模型中删除项目? 你总是需要从你的数据模型中删除它。集合视图只不过是您数据的视图。deleteItemsAtIndexPaths: 允许您在不使用reloadData 的情况下更新屏幕。 Ergo:你想两者兼得。 我是否需要创建一个数组来对所选单元格进行 ceap 跟踪,或者 NSArray *indexPaths = [[self cardTable] indexPathsForSelectedItems];转换为可用于删除数据模型中的单元格的 NSIndexSet? 【参考方案1】:

解决办法:

- (void) removeCardsFromTable: (NSArray *) indexPaths 
    NSMutableArray *cards = [[NSMutableArray alloc] init];
    for (NSInteger selectedLoop = 0; selectedLoop < 3; selectedLoop++) 
        NSIndexPath *card = [indexPaths objectAtIndex: selectedLoop];
        [cards addObject: [[self cardTable] objectAtIndex: [card item]]];
    
    for (NSInteger selectedLoop = 0; selectedLoop < 3; selectedLoop++) 
        [[self cardTable] removeObject: [cards objectAtIndex: selectedLoop]];
    

【讨论】:

@Bunk:选择代码行并按下CTRL+K 会变魔术。 :)

以上是关于UICollectionView 删除选定的单元格的主要内容,如果未能解决你的问题,请参考以下文章

如何从选定的 UICollectionView 单元格中获取数据?

UICollectionView中删除一个单元格后刷新单元格布局

如何获取UICollectionView中选中的单元格索引

UICollectionView 单元格删除

单元格删除时的 UICollectionView 动画

UICollectionView:删除单元格问题