使用UICollectionView时出现错误,如下所示:
2013-11-29 17:29:07.832 Clients[34200:70b]
*** Terminating app due to uncaught exception 'NSInvalidArgumentException',
reason: '*** setObjectForKey: object cannot be nil
(key: <_UICollectionViewItemKey: 0x8da14f0>
Type = DV ReuseID = (null) IndexPath = (null))'
代码如下所示,在这里,我基本上有两个NSMutableArrays-一个包含所有条目,另一个用于将条目缩减为一个部分-在这一点上,我将所有缺少的部分重新加入(希望感)。
[self.collectionView performBatchUpdates:^{
NSString *selectedMarketSector = [[[[_marketSectors objectAtIndex:0] clients] objectAtIndex:0] clientMarketSector];
NSMutableIndexSet *insertSections = [[NSMutableIndexSet alloc] init];
for (TBMarketSector* sector in _allMarketSectors) {
if (![[[[sector clients] objectAtIndex:0] clientMarketSector ] isEqualToString:selectedMarketSector]) {
[insertSections addIndex:[_allMarketSectors indexOfObject:sector]];
}
}
_marketSectors = [self.allMarketSectors mutableCopy];
[self.collectionView insertSections:insertSections];
} completion:^(BOOL finished) {
[self setLayoutStyle:TBLayoutStacks animated:YES];
}];
“看来”是导致问题的那一行是
[self.collectionView insertSections:insertSections];
,但我想知道其他地方是否发生了奇怪的事情……多谢您提供的协助。
最佳答案
信不信由你,看来这个特定问题实际上与我不需要的UICollectionElementKindSectionFooter
有关。
我应该提到,这只是iOS7的问题(不是切换到iOS 7后我遇到的第一个问题)。
无论如何,我的自定义UICollectionViewFlowLayout
实现了- (UICollectionViewLayoutAttributes *)layoutAttributesForSupplementaryViewOfKind:(NSString *)kind atIndexPath:(NSIndexPath *)indexPath
方法,并为所有补充视图返回了一些属性。
要解决此特定问题,我需要添加以下内容:
if ([kind isKindOfClass:[UICollectionElementKindSectionFooter class]])
return nil;
谢谢。