0

我正在使用UICollectionView并且我的应用程序崩溃,因为我的物品数量为奇数,list但我需要拖曳部分中的物品。

这是我在每个部分中的项目编号:

(NSInteger)collectionView:(UICollectionView *)view numberOfItemsInSection:(NSInteger)section
{
    return 2;
}

这是问题所在:在我的列表中,我有 3 个项目,当 objectAtIndex 为 3 时,应用程序崩溃

 MSCoupon *coupon = [list objectAtIndex:indexPath.section * 2 + indexPath.row];

你有什么解决办法吗?

4

2 回答 2

1

发生这种情况是因为集合视图试图访问第二部分的第二个元素。这导致崩溃,因为您的公式创建索引 3。

对于section section的第二个元素你的公式

indexPath.section * 2 + indexPath.row

1*2 + 1 = 3

由于您的数组只有 3 个元素,当您尝试访问第四个元素时它会通过异常。(数组索引以 0 开头)。在集合视图委托中,您编写此公式。保持其余代码不变,它应该可以工作

(NSInteger)collectionView:(UICollectionView *)view numberOfItemsInSection:(NSInteger)section { 
  return (list.count/(section + 1)) >= 2? 2: 1; 
}
于 2013-01-09T08:39:07.447 回答
0

我的解决方案如下:

- (NSInteger)collectionView:(UICollectionView *)view numberOfItemsInSection:(NSInteger)section
 {
  //return 2;
   return [list count];
}

和:

- (NSInteger)numberOfSectionsInCollectionView: (UICollectionView *)collectionView
{
   //return [list count]/2;
   return 1;
}

你对我有更好的建议吗?

于 2013-01-09T08:38:04.293 回答