gpt4 book ai didi

ios - UICollectionView - 多个不同的单元格

转载 作者:塔克拉玛干 更新时间:2023-11-02 10:11:10 24 4
gpt4 key购买 nike

使用 UICollectionView,我尝试添加另一个 UICollectionViewCell。第一个代码显示了第一个 Cell,它运行良好。当我尝试添加另一个 UICollectionViewCell 时出现问题。

static NSString *identifier = @"Cell"; // Default Cells

UICollectionViewCell *cell = [collectionView dequeueReusableCellWithReuseIdentifier:identifier forIndexPath:indexPath];
UIImageView *illustrationImage = (UIImageView *)[cell viewWithTag:100];
illustrationImage.image = [UIImage imageNamed:[stackImage objectAtIndex:indexPath.row]];

UILabel *stackLabel = (UILabel *)[cell viewWithTag:12];
[stackLabel setText:[stackTitle objectAtIndex:indexPath.row]];

在这里,我想向我的 UICollectionView 添加一个具有不同内容的全新 Cell。每当我运行这段代码时,整个过程都拒绝启动:

static NSString *newIdentifier = @"AddNewCell"; 

UICollectionViewCell *newCell = [collectionView dequeueReusableCellWithReuseIdentifier:newIdentifier forIndexPath:indexPath];

UIImageView *addNewImage = (UIImageView *)[newCell viewWithTag:120];
addNewImage.image = [UIImage imageNamed:[addNew objectAtIndex:indexPath.row]]; // This line makes the app crash

return cell;
return newCell;

错误信息

Terminating app due to uncaught exception 'NSRangeException', reason: '* -[__NSArrayI objectAtIndex:]: index 1 beyond bounds [0 .. 0]'

我怀疑这与 indexPath.row 有关。如果我将以下代码中的 indexPath.row 部分替换为“0”,则它不会崩溃,但它不会在 UICollectionView 中可见:

[addNew objectAtIndex:indexPath.row]]

最佳答案

首先,我假设您正在运行您在collectionView:cellForItemAtIndexPath: 方法,而不是代码中的其他地方。

此外,您不能在上述方法中同时创建(也不能返回!!)两个单元格。您应该根据作为参数接收到的索引路径来决定出队、实例化和返回的单元格。

现在,关于您收到的“index beyond bounds”错误:您正在尝试访问名为 addNew 的数组元素,该元素实际上并不存在在您要访问它的那一刻在数组中。在您的情况下,您尝试访问数组的第二个元素(索引 1),而数组只有一个元素(索引 0)。

您可能想要验证addNew 数组在您访问它之前是否已正确初始化。

关于ios - UICollectionView - 多个不同的单元格,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15320990/

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