我无法摆脱这种情况,我有一个带有自定义单元格的UICollectionView,每个单元格都有一个X按钮从列表中删除它,我传递给button.tag和IndexPath.item功能我实现了以下方法:
- (void)DeleteProductFromArray:(UIButton *)button {
NSLog(@"item: %d",button.tag);
TagHelpConverted = [NSNumber numberWithInt:button.tag];
TagHelp = button.tag;
if(DeletedCells.count == 0)
{
[DeletedCells addObject:TagHelpConverted];
}
else
{
for(int i = 0; i < DeletedCells.count; i++)
{
if([TagHelpConverted compare:DeletedCells[i]] == NSOrderedDescending)
{
TagHelp--;
NSLog(@"ho diminuito il tag di 1");
}
}
[DeletedCells addObject:TagHelpConverted];
}
NSLog(@"valore tagHelp:%d", TagHelp);
[_feedItems removeObjectAtIndex:TagHelp];
[self.customCollectionView deleteItemsAtIndexPaths:@[[NSIndexPath indexPathForItem:TagHelp inSection:0]]];
[self.customCollectionView reloadData];
}
问题是当滚动UICollectionView时调用- (UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath {
并且我的NSMutableArray存储了哪些按钮已经被点击了#34;旧值&#34;与此方法分配的新方法相比,该应用程序会删除UICollectionView中的随机项。
我在互联网上搜索了关于删除UICollectionView单元格的帮助,但我发现了几乎所有东西,我在这个问题上非常努力但我无法找到出路的方法,如果有人有解决方案请帮助我
答案 0 :(得分:2)
要从collectionView中删除单元格,您可以从数据源中删除它们并重新加载collectionView。您希望确保数据源与屏幕上的数据源保持同步。基本上,保持数据源的方式,并调用[collectionView reloadData]。
- (void)didTapDeleteCellBtn:(UIButton *)deleteCellBtn {
UICollectionViewCell *cell = (UICollectionViewCell *)deleteCellBtn.superview.superview; // Make sure this gets the right cell for the button
NSIndexPath *indexPath = [self.customCollectionView indexPathForCell:cell];
id item = self.feedItems[indexPath.row];
NSMutableArray *updatedFeedItems = [self.feedItems mutableCopy];
[updatedFeedItems removeObject:item];
self.feedItems = [NSArray arrayWithArray:updatedFeedItems];
[self.customCollectionView reloadData];
}