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

これは、コレクション ビューが 2 番目のセクションの 2 番目の要素にアクセスしようとしているために発生しています。式がインデックス 3 を作成するため、クラッシュが発生します。

セクション section の 2 番目の要素の場合、数式

indexPath.section * 2 + indexPath.row

与える

1*2 + 1 = 3

配列には3つの要素しかないため、4番目の要素にアクセスしようとすると例外が発生します(配列インデックスは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 に答える