iOS更改每个单元格颜色(部分+行)

时间:2016-10-17 19:08:23

标签: ios objective-c uitableview cell

我想更改每个单元格中的单元格颜色(4种颜色%4):

1。第1节

单元格1:RED

Cell 2:BLUE

2。第2节

Cell 3:BLACK

第3。第3节

Cell 4:WHITE

4。第4节

细胞5:红色

Cell 6:BLUE

Cell 7:BLACK ...

我怎样才能做到这一点?

我知道如何在cellForRow中更改颜色:cell.contentView.backgroundColor = [UIColor colorWithRed:119.0/255.0 green:221.0/255 blue:167.0/255 alpha:1.0f];

4 个答案:

答案 0 :(得分:1)

我假设你有一个存储你的节和行数据的数组数组。我将创建一个函数,它将一个节和一个行号作为参数,并返回一个忽略该节的位置:

- (Int) getPosition:(Int) section rowNumber:(Int) row {
    int position = 0;
    for (int i = 0; i < section; i++) {
        position += DataArray[i].count;
    }
   return position + row;
}

这会将前面部分中的所有计数相加,然后在当前部分中添加行,以便为您提供用于着色的新数字。然后调用它,在你的cellForRow方法中写这个:

newIndex = [self getPosition:indexPath.section rowNumber:indexPath.row]

如果您使用此数字来确定颜色,它将被正确着色。

答案 1 :(得分:0)

您可以使用开关案例声明来解决此问题

创建一个函数以返回UIColor并作为此方法的参数,发送一个0到3之间的数字

-(UIColor *)colorForCell:(NSInteger)index {
    switch (index) {
                case 0:
                    return RED
                    break;
                case 1:
                    return BLUE
                    break;
                case 2:
                    return BLACK
                    break;
                case 3:
                    return WHITE
                    break;

                default:
                    return RED
                    break;
            } 
}

而不仅仅是cellForRow : cell.contentView.backgroundColor = [self colorForCell:index]

答案 2 :(得分:0)

找到解决方案:

NSInteger rowNumber = 0;
for (NSInteger i = 0; i < indexPath.section; i++) {
    rowNumber += [self.tableView numberOfRowsInSection:i];
}

rowNumber += indexPath.row;
switch (rowNumber % 4) {
    case 0:
        cell.contentView.backgroundColor = [UIColor blackColor];
        break;
    case 1:
        cell.contentView.backgroundColor = [UIColor redColor];
        break;
    case 2:
        cell.contentView.backgroundColor = [UIColor whiteColor];
        break;
    case 3:
        cell.contentView.backgroundColor = [UIColor yellowColor];
        break;

    default:
        break;
}

答案 3 :(得分:0)

由于您希望根据单元格的索引/位置按顺序选择问题中提到的四种颜色中的一种,而不管该部分如此,这样就可以了。

- (UIColor *)colorForCellAtIndexPath:(NSIndexPath *)indexPath {

UIColor *cellColor;
NSInteger index = 0;

for (NSInteger i=0; 1<indexPath.section; i++) {

    index += [self.tableView numberOfRowsInSection:i];
}

index += indexPath.row;

switch (index % 4) {

    case 0:
        cellColor = [UIColor redColor];
        break;

    case 1:
        cellColor = [UIColor blueColor];
        break;

    case 2:
        cellColor = [UIColor blackColor];
        break;

    case 3:
        cellColor = [UIColor whiteColor];
        break;

    default:
        break;
}

return cellColor;
}

cellForRowAtIndexPath:中调用此方法,并将indexPath作为参数传递。