gpt4 book ai didi

当标题在屏幕上时,IOS UICollectionView insertItemsAtIndexPaths 崩溃

转载 作者:可可西里 更新时间:2023-11-01 05:13:48 25 4
gpt4 key购买 nike

我有一个 UICollectionView,其 header 的大小不为零。似乎每当调用 insertItemsAtIndexPaths 时,如果标题在屏幕上,程序就会崩溃并显示以下消息:

Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '*** setObjectForKey: object cannot be nil (key: <_UICollectionViewItemKey: 0xa38c910> Type = SV Kind = UICollectionElementKindSectionHeader IndexPath = <NSIndexPath 0xa38c7c0> 2 indexes [0, 0])'

当 header 大小为零时,或者当 header 不在屏幕上时,调用 insertItemsAtIndexPaths 可以正常工作。有谁知道如何解决这一问题?谢谢!

该类是 UICollectionViewController 的子类。下面是与 UICollectionView 相关的代码:

- (id)init {
// Collection view layout
UICollectionViewFlowLayout *layout = [[UICollectionViewFlowLayout alloc] init];
layout.itemSize = CGSizeMake(100, 100);
layout.headerReferenceSize = CGSizeMake(320, 50); // Left for the switch
layout.minimumInteritemSpacing = 5;
layout.minimumLineSpacing = 5;
layout.scrollDirection = UICollectionViewScrollDirectionVertical;
layout.sectionInset = UIEdgeInsetsMake(5, 5, 5, 5);

if (self = [super initWithCollectionViewLayout:layout]) {
// Collection view setup
[self.collectionView registerClass:[UICollectionViewCell class] forCellWithReuseIdentifier:@"ID"];
self.collectionView.frame = CGRectMake(0, -20, 320, 480-20-44-49);
self.collectionView.backgroundView = nil;
self.collectionView.backgroundColor = [UIColor clearColor];
...
}
return self;
}

然后我实现了两个委托(delegate)方法:

- (NSInteger)collectionView:(UICollectionView *)collectionView numberOfItemsInSection:(NSInteger)section {
return [blogs count];
}

- (UICollectionViewCell *)collectionView:(UICollectionView *)collectionViewArg cellForItemAtIndexPath:(NSIndexPath *)indexPath {
UICollectionViewCell *cell = [collectionViewArg dequeueReusableCellWithReuseIdentifier:@"ID" forIndexPath:indexPath];
/* Some code to get blogView */
[cell.contentView addSubview:blogView];
return cell;
}

最佳答案

问题是在日志中说标题不能为零。所以在那里提供一些有效的输入,你可以避免崩溃。

如果标题部分不需要输入,就用 clearclolor 给它一个 View

要实现标题部分,您必须实现以下数据源方法

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

关于当标题在屏幕上时,IOS UICollectionView insertItemsAtIndexPaths 崩溃,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14972827/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com