是否可以为每个部分设置单元格背景颜色?

时间:2014-01-28 03:44:51

标签: ios objective-c

我正在尝试根据部分编号设置单元格背景颜色,但它不能正常工作。当我来回滚动时,单元格颜色会发生变化并出错。我正在尝试使用willDisplayHeaderView中设置的颜色变量来执行此操作,然后在willDisplayCell中使用。这是代码:

- (void)tableView:(UITableView *)tableView willDisplayHeaderView:(UIView *)view     forSection:(NSInteger)section{

    if(section % 2 == 0){
        self.currentCellColor =[UIColor colorWithRed:(199/255.0) green:(214/255.0) blue:(156/255.0) alpha:1];
    }
    else{
        self.currentCellColor = [UIColor colorWithRed:(242/255.0) green:(245/255.0) blue:(232/255.0) alpha:1];
    }
}

- (void)tableView:(UITableView *)tableView willDisplayCell:(UITableViewCell *)cell forRowAtIndexPath:(NSIndexPath *)indexPath {
    cell.backgroundColor = self.currentCellColor;
}

此外,部分功能对于这一功能并不重要,因此如果有人在一个大部分中有更好/更简单的方法来实现这一功能,那么请随时提出建议。我只需要每4行更改一次颜色。

3 个答案:

答案 0 :(得分:2)

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {

    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"identifier"];
    ....

    if (indexPath.section % 2) {    
        cell.contentView.backgroundColor = [UIColor redColor];
    }
    else {
        cell.contentView.backgroundColor = [UIColor blueColor];
    }

    return cell;  
}

答案 1 :(得分:0)

如果是我,我将为每个部分设置不同的单元格标识符,然后在cellForRowAtIndexPath:中设置单元格颜色当滚动并且tableView重用您的单元格时,您可以确定它不会抓住一个那是错误的颜色。

答案 2 :(得分:0)

试试这个

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {

    static NSString *cellIdentifier = @"cellIdentifier";
    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:cellIdentifier];
    ....

    if(indexPath.section % 2 == 0){
        self.currentCellColor =[UIColor colorWithRed:(199/255.0) green:(214/255.0) blue:(156/255.0) alpha:1];
    }
    else{
        self.currentCellColor = [UIColor colorWithRed:(242/255.0) green:(245/255.0) blue:(232/255.0) alpha:1];
    }
    cell.contentView.backgroundColor = self.currentCellColor;

    ....
    return cell;  
}