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 单元格中获取数据?