在UITableViewCell中为特定单元格设置颜色

时间:2017-06-09 09:16:42

标签: ios objective-c uitableview

我正在尝试将UITableViewCell中特定单元格的背景颜色设置为紫色。

到目前为止,我已经尝试了这一点,它将所有细胞的颜色设置为紫色,而不是仅设置为第一个细胞。

cellForRowAtIndexPath方法中:

for(int k = 0; k < queueMCDate.count; k++){
    if(_qbColorArr.count == 0) {

    }
    else if ([[_qbColorArr objectAtIndex:k]  isEqual:@"a"]) {
        if(indexPath.row == k)
        cell.backgroundColor = [UIColor colorWithRed:0.48 green:0.04 blue:0.41 alpha:1.0];
    }
}

return cell;
}

这是一个链接,显示目前的情况。

Link

我希望应用程序如何工作,在第一个单元格中设置返回日期后,我希望它是紫色的。通过,  为它们分配一个字符串值a,当我设置返回日期时,我希望它能起作用。

编辑:

cellForRowAtIndexPath方法中:

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
QueueDetails *cell = [tableView dequeueReusableCellWithIdentifier:@"reuCell" forIndexPath:indexPath];

cell.queueNo.text = fQueueNo[indexPath.row];
cell.queueeName.text = queueNameDisp[indexPath.row];
cell.bkTitle.text = queueBk[indexPath.row];
cell.dateRe.text = queueRDate[indexPath.row];
cell.dateBo.text = queueBDate[indexPath.row];

for(int k = 0; k < queueRDate.count; k++){
    if(_qbColorArr.count == 0) {
         cell.backgroundColor = [UIColor whiteColor];
         return cell;
    }
    else if ([[_qbColorArr objectAtIndex:k]  isEqual:@"a"]) {
        if(indexPath.row == k)
            cell.backgroundColor = [UIColor colorWithRed:0.48 green:0.04 blue:0.41 alpha:1.0];
            return cell;
        else{
            cell.backgroundColor = [UIColor whiteColor];
            return cell;
        }
    }
}


}

单元格在开始时默认为白色,但是当向单元格添加返回日期时,该单元格需要变为紫色,表示已返回书籍,而其他人保持白色。

为了更好地说明,我使用_qbColorArr的原因是因为数组包含空格(在viewDidLoad初始化)或a。因此,当我将返回日期设置为第一个单元格时,我也已完成此[_qbColorArr replaceObjectAtIndex:0 withObject:@"a"]。然后将在else if语句中检查,并将单元格的颜色指定为紫色。

2 个答案:

答案 0 :(得分:1)

您没有在else条件中设置默认颜色。一旦行的颜色设置为紫色,那么由于重用标识符,颜色保持不变。设置默认颜色如下: -

for(int k = 0; k < queueMCDate.count; k++){
    if(_qbColorArr.count == 0) {
       cell.backgroundColor = [UIColor whiteColor];//Your Default Color will go here 
    }
    else if ([[_qbColorArr objectAtIndex:k]  isEqual:@"a"]) {
        if(indexPath.row == k)
            cell.backgroundColor = [UIColor colorWithRed:0.48 green:0.04 blue:0.41 alpha:1.0];
        else{
            cell.backgroundColor = [UIColor whiteColor];//Your Default Color will go here
        }
    }
}

return cell;

答案 1 :(得分:0)

实际上,我真的不明白你的问题......正如你的描述中所说的那样,我会认为如果cell.dateRe.text什么都不是,那么你的细胞将是白色和紫色。

所以试一试。

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
QueueDetails *cell = [tableView dequeueReusableCellWithIdentifier:@"reuCell" forIndexPath:indexPath];

cell.queueNo.text = fQueueNo[indexPath.row];
cell.queueeName.text = queueNameDisp[indexPath.row];
cell.bkTitle.text = queueBk[indexPath.row];
cell.dateRe.text = queueRDate[indexPath.row];
cell.dateBo.text = queueBDate[indexPath.row];

if (cell.dateRe.text.length > 0){
    cell.backgroundColor = [UIColor colorWithRed:0.48 green:0.04 blue:0.41 alpha:1.0];
} else{
    cell.backgroundColor = [UIColor whiteColor];
}
return cell;
}