gpt4 book ai didi

uicollectionview - viewForSupplementaryElementOfKind 在 "index 0 beyond bounds for empty array"上崩溃

转载 作者:行者123 更新时间:2023-12-02 05:18:15 26 4
gpt4 key购买 nike

有时我会从 viewForSupplementaryElementOfKind 收到此“索引 0 超出空数组边界”错误。它只是有时发生,通常集合加载正常并且一切运行顺利。我想知道什么数组是空的?注册的细胞?(我尝试通过代码或从界面构建器注册它们,但仍然没有任何变化)

我猜测有时在加载集合时调用此方法的时间过早,并且缺少一些尚未加载的数据。

谁能给我指出任何方向?

我的实现非常简单:(并且我在 View 上使用了正确的重用标识符)

- (UICollectionReusableView *)collectionView:(UICollectionView *)theCollectionView viewForSupplementaryElementOfKind:(NSString *)kind atIndexPath:(NSIndexPath *)theIndexPath{
UICollectionReusableView *theView;

if(kind == UICollectionElementKindSectionHeader)
{
theView = [theCollectionView dequeueReusableSupplementaryViewOfKind:UICollectionElementKindSectionHeader withReuseIdentifier:@"header" forIndexPath:theIndexPath];
} else {
theView = [theCollectionView dequeueReusableSupplementaryViewOfKind:UICollectionElementKindSectionFooter withReuseIdentifier:@"footer" forIndexPath:theIndexPath];
}

return theView;}

最佳答案

在对这次崩溃进行了长时间的研究后,我发现:

  • 如果您从 Nib 加载 Collection View 并在其流布局中将 Nib 文件中的节标题大小设置为非零,它会崩溃。

  • 如果您在 Nib 文件中将流布局中节标题的大小设置为零,然后在 viewDidLoad 中适本地设置它,则不会崩溃:

    - (void)viewDidLoad
    {
    [super viewDidLoad];

    [self.collectionView registerNib:[UINib nibWithNibName:@"HeaderView" bundle:nil]
    forSupplementaryViewOfKind:UICollectionElementKindSectionHeader
    withReuseIdentifier:sHeaderViewIdentifier];

    [self.collectionView registerNib:[UINib nibWithNibName:@"Cell" bundle:nil] forCellWithReuseIdentifier:sCellIdentifier];

    UICollectionViewFlowLayout *layout = (UICollectionViewFlowLayout *)self.collectionView.collectionViewLayout;
    layout.headerReferenceSize = CGSizeMake(self.collectionView.bounds.size.width, 50.f);
    [layout invalidateLayout];
    }

关于uicollectionview - viewForSupplementaryElementOfKind 在 "index 0 beyond bounds for empty array"上崩溃,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17342380/

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