我有一个包含两个部分的UICollectionView。
我想更改每个部分中第一行单元格的backgroundColor
属性。
我试过这个:
-(UICollectionViewCell *)collectionView:(UICollectionView *)aCollectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath {
.... snip
if (indexPath.row == 0) {
cell.backgroundColor = [UIColor redColor];
} else {
cell.backgroundColor = [UIColor whiteColor];
}
..... snip
}
但这只会改变第1行第1列的颜色。
奇怪但我找不到这样的问题。让我知道,我会删除这个。
更新:
部分数量..
-(NSInteger)numberOfSectionsInCollectionView:(UICollectionView *)collectionView {
return self.dataArray.count;
}
- (NSInteger)collectionView:(UICollectionView *)collectionView
numberOfItemsInSection:(NSInteger)section
{
NSMutableArray *sectionArray = [self.dataArray objectAtIndex:section];
return [sectionArray count];
}
数据数组现在是垃圾数据,但看起来像这样:
for (int i=0; i<50; i++) {
[firstSection addObject:[NSString stringWithFormat:@"Cell %d", i]];
[secondSection addObject:[NSString stringWithFormat:@"item %d", i]];
}
self.dataArray = [[NSArray alloc] initWithObjects:firstSection, secondSection, nil];
答案 0 :(得分:1)
为您设置了条件条件的else
的{{1}}部分编码相同的代码段
答案 1 :(得分:1)
您必须检查第一行中有多少个对象。
将其带入numberOfObjectsInFirstRow
-(UICollectionViewCell *)collectionView:(UICollectionView *)aCollectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath {
if(indexPath.row < numberOfObjectsInFirstRow)
{
cell.backgroundColor = [UIColor redColor];
}
else
{
cell.backgroundColor = [UIColor whiteColor];
}
}
答案 2 :(得分:0)
你可以尝试一下:
- (UICollectionViewCell *)collectionView:(UICollectionView *)aCollectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath {
if(indexPath.row == 0) {
cell.contentView.backgroundColor = [UIColor redColor];
} else {
cell.contentView.backgroundColor = [UIColor whiteColor];
}
}