1
- (void)deleteCell 
{
        [self.collectionViewMenu performBatchUpdates:^{

           [self.itemsArray removeObjectAtIndex:1];
           NSIndexPath *indexPath = [NSIndexPath indexPathForRow:1 inSection:0];
           [self.collectionViewMenu deleteItemsAtIndexPaths:@[indexPath]];

    } completion:^(BOOL finished) {  }];
}

请帮忙解决这个问题,我做错了什么?尝试删除 collectionView 中的项目后出现此错误。

*** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '*** setObjectForKey: object cannot be nil (key: <_UICollectionViewItemKey: 0x8d705e0> Type = SV Kind = UICollectionElementKindSectionHeader IndexPath = <NSIndexPath: 0x8d6f4b0> {length = 2, path = 0 - 0})'
4

4 回答 4

3

我通过删除页眉和页脚大小代表解决了这个问题。问题在于我没有返回页眉或页脚。

- (CGSize)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout*)collectionViewLayout referenceSizeForHeaderInSection:(NSInteger)section;
- (CGSize)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout*)collectionViewLayout referenceSizeForFooterInSection:(NSInteger)section;
于 2013-09-23T08:36:24.293 回答
0

setObjectForKey: object cannot be nil表示您尝试删除的单元格可能已被删除。您应该尝试调试它并查看何时调用 delete 哪些视图在您的集合视图中实际位于哪些索引路径。

于 2013-09-23T08:30:49.787 回答
0

我只是试着打电话collectionViewLayout.invalidateLayout()之前performBatchUpdates。然后确保布局实现正确,并确保您没有返回单元格的负高度。有关更多详细信息,您可以访问下面的 GitHub 链接。 https://github.com/ra1028/DifferenceKit/issues/13

它帮助我修复了错误。

于 2019-09-13T12:51:37.883 回答
0

您可能需要实现:

- (UICollectionReusableView *)collectionView:(UICollectionView *)collectionView viewForSupplementaryElementOfKind:(NSString *)kind atIndexPath:(NSIndexPath *)indexPath;

在您的数据源中。这对我有用。

于 2016-02-18T20:45:59.190 回答