objc如何更改UICollectionView中第一行单元格的颜色?

时间:2015-08-24 08:47:24

标签: ios objective-c uicollectionview

我有一个包含两个部分的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];

3 个答案:

答案 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];
     }
}