我创建了一个用于创建自定义选择器视图的子视图,我使用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个单元格,剩下的单元格有另一种颜色。我该如何解决这个问题呢?
答案 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