を使用して複数列のテーブルを作成しますUICollectionView
。最初の写真のようにうまく機能します。
各行が異なるセクションを表すように作成しました。つまり、最初の行はセクション 0、2 番目の行はセクション 1 などです。
各行にテキストを書く必要があります。最初の画像のようにテキストを書くことができます。
しかし問題は、CollectionView がスクロールされると、セクション 0 (行 0) に書き込まれたテキストが、2 番目の画像に示すように別の行 (通常、スクロール前に非表示になる行) で異なる順序で繰り返されることです。
私のコードを以下にテキストで示します。
- (UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath
{
UICollectionViewCell *cell=[collectionView dequeueReusableCellWithReuseIdentifier:@"cellIdentifier" forIndexPath:indexPath];
//Label
UILabel *textLabel = [[UILabel alloc]initWithFrame:CGRectMake(0, 0, cell.bounds.size.width, cell.bounds.size.height)];
textLabel.font = [UIFont fontWithName:@"ArialMT" size:12];
textLabel.clipsToBounds = YES;
textLabel.backgroundColor = [UIColor clearColor];
textLabel.textColor = [UIColor blackColor];
textLabel.textAlignment = NSTextAlignmentCenter;
textLabel.lineBreakMode = NSLineBreakByWordWrapping;
textLabel.numberOfLines = 0;
if(indexPath.section == 0){
cell.backgroundColor=[UIColor blackColor];
textLabel.textColor = [UIColor whiteColor];
if(indexPath.item == 0){
textLabel.text = @"Date";
}
else if(indexPath.item == 1)
textLabel.text = @"Age";
else if(indexPath.item == 2)
textLabel.text = @"Height (cm)";
else if(indexPath.item == 3)
textLabel.text = @"%le";
else if(indexPath.item == 4)
textLabel.text = @"Weight (kg)";
else if(indexPath.item == 5)
textLabel.text = @"%le";
}
else if(indexPath.section % 2 == 0)
cell.backgroundColor=[UIColor grayColor];
else
cell.backgroundColor=[UIColor lightGrayColor];
[cell addSubview:textLabel];
return cell;
}
つまり、このコールバック関数はスクロール時に常に呼び出されます。
- (UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath
行内のテキストが別の行で繰り返されず、スクロール時に常に専用の行にとどまるのを防ぐにはどうすればよいですか。
ありがとう