更改颜色中间可见行

时间:2014-01-21 08:31:53

标签: uitableview

我创建了一个用于创建自定义选择器视图的子视图,我使用tableview项来执行此操作,我需要为中间单元格设置不同的颜色,例如,如果我有3个可见行,则需要灰色,黑色,灰色,为此我尝试这样:

- (void) tableView:(UITableView *)tableView willDisplayCell:(UITableViewCell *)cell forRowAtIndexPath:(NSIndexPath *)indexPath {
    NSArray *visibleCells = [tableView visibleCells];
    for (int i = 0; i < [visibleCells count]; i++) {

        if (i == 1) {
            UITableViewCell *cell = [visibleCells objectAtIndex:i];
            [cell.textLabel setTextColor:[UIColor blackColor]];
        }
    }
}

第一次出现tableview是好的但是如果我滚动我得到一个颜色的前2个或最后2个单元格,剩下的单元格有另一种颜色。我该如何解决这个问题呢?

1 个答案:

答案 0 :(得分:0)

快速回答:

- (void) tableView:(UITableView *)tableView willDisplayCell:(UITableViewCell *)cell forRowAtIndexPath:(NSIndexPath *)indexPath {
    NSArray *visibleCells = [tableView visibleCells];
    for (int i = 0; i < [visibleCells count]; i++) {

        if (i == 1) {
            UITableViewCell *cell = [visibleCells objectAtIndex:i];
            [cell.textLabel setTextColor:[UIColor blackColor]];
        }
        else{
            UITableViewCell *cell = [visibleCells objectAtIndex:i];
            [cell.textLabel setTextColor:[UIColor grayColor]];
        }
    }
}

说明:

滚动tableview时...不可见的行在显示时被“删除”和“重新创建”..这就是为什么有重用标识符...重用这些单元格...如果你重复使用blackColor的单元格..因为你没有一个ELSE声明..它会保持黑色..即使你想要它是灰色的......添加else语句以获得所需的结果.. GL HF