我想更改每个单元格中的单元格颜色(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];
答案 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
作为参数传递。