UICollectionViewで作業しているとき、私は以下のようにペン先からセルをロードしています
- (void)viewDidLoad
{
[super viewDidLoad];
/* Uncomment this block to use nib-based cells */
UINib *cellNib = [UINib nibWithNibName:@"NibCell" bundle:nil];
[self.collectionView registerNib:cellNib forCellWithReuseIdentifier:@"cvCell"];
// Configure layout
UICollectionViewFlowLayout *flowLayout = [[UICollectionViewFlowLayout alloc] init];
self.collectionView.contentInset = UIEdgeInsetsMake(10.0f, 0.0f, 10.0f, 0.0f);
[flowLayout setItemSize:CGSizeMake(300, 200)];
[flowLayout setScrollDirection:UICollectionViewScrollDirectionVertical];
[self.collectionView setCollectionViewLayout:flowLayout];
}
そして私のnibファイルは以下のようになります
上のラベルはセルの数を表示するために使用され、中央のラベルは特定のテキストを表示するために使用されます
メソッドcellForItemAtIndexPathで、テキストを特定の行のセルに設定したいだけです(この例では、1行目でテキストを設定しています):
-(UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath {
// Setup cell identifier
static NSString *cellIdentifier = @"cvCell";
UICollectionViewCell *cell = [collectionView dequeueReusableCellWithReuseIdentifier:cellIdentifier forIndexPath:indexPath];
UILabel *titleLabel = (UILabel *)[cell viewWithTag:100];
UILabel *cellLablel = (UILabel *)[cell viewWithTag:200];
cellLablel.text = self.dataArray[0][indexPath.row];
if ( indexPath.row == 1)
[titleLabel setText:@"this is row 1"];
return cell;
}
アプリを実行すると、問題が発生します。row1のセルのtitleLabelが
に設定されるだけでThis is row 1
なく、row5、row9、row10のtitleLabelも設定されます。
誰かが私が途中で間違っていることを知っているなら。助けてください。
私のコレクションには、このセクションの1つのセクションと15の行が含まれています。