我希望tableView的第一项与列表的其他部分颜色不同。
所以我:
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
static NSString *CellIdentifier = @"cell";
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier forIndexPath:indexPath];
cell.textLabel.text = [_content objectAtIndex:indexPath.row];
if (indexPath.row==0){
cell.textLabel.textColor = [UIColor colorWithRed:0 green:0 blue:0.6 alpha:1];
}
return cell;
}
发生了奇怪的现象。列表后面的10个项目,该项目也改变了颜色。认为它可能是“0”反复出现。所以我试过了:
if([cell.textLabel.text isEqualToString:@“我的第一个项目的标题”]){ cell.textLabel.textColor = [UIColor colorWithRed:0 green:0 blue:0.6 alpha:1]; }
好吧,10件事之后,仍在改变该项目的颜色。有什么想法吗?
答案 0 :(得分:2)
UITableView不会为每一行分配新的单元格。相反,为了节省内存,可以调用dequeueReusableCellWithIdentifier:,它可以获取先前已分配的单元格。我怀疑发生的是你的屏幕可以容纳10个单元格,所以当你的第一个单元格滚出屏幕时,它会被重用于单元格11,但它的文本颜色保持不变。要解决此问题,只需在颜色分配中添加else语句即可。
if (indexPath.row==0){
cell.textLabel.textColor = [UIColor colorWithRed:0 green:0 blue:0.6 alpha:1];
}
else {
cell.textLabel.textColor = [UIColor someOtherColor];
}
这样,当第一个单元格被重用时,它的颜色将被重置。