0

我正在通过 Core Data 和 an 提取一些对象,NSFetchedResultsController并且我正在尝试根据它们的布尔属性之一对它们应用条件格式。例如,如果它们被标记为Liked我希望它们的文本颜色为蓝色。

我发现的问题是,在滚动表格时,不仅仅是那些带有LikedasYES的被着色。这也是一个常规模式,例如,当我向下滚动时,每六个条目。我认为这与细胞排队和重用有关,但我不知道是什么。这是我的代码:

- (UITableViewCell *) tableView: (UITableView *) tableView cellForRowAtIndexPath: (NSIndexPath *) indexPath
{
    static NSString *CellIdentifier = @"Cell";
    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier: CellIdentifier forIndexPath: indexPath];

    Quote *thisQuote = [self.fetchedResultsController objectAtIndexPath: indexPath];

    cell.textLabel.numberOfLines = 4;
    cell.textLabel.font = [UIFont boldSystemFontOfSize: 12];
    cell.textLabel.textAlignment = NSTextAlignmentCenter;
    cell.textLabel.text = [[self.fetchedResultsController objectAtIndexPath: indexPath] quote];

    if ([[thisQuote isLiked] boolValue]) {
        cell.textLabel.textColor = [UIColor blueColor];
    }

    return cell;
}
4

2 回答 2

2

当您使用dequeueReusableCellWithIdentifier:时,您必须为每个单元格重置属性 textColor :

if ([[thisQuote isLiked] boolValue]) {
    cell.textLabel.textColor = [UIColor blueColor];
}
else cell.textLabel.textColor = [UIColor blackColor];
于 2013-02-26T13:22:28.240 回答
0

对于每六个单元格,您始终可以执行以下操作:

if(indexPath.row % 6 == 0) {
    // Set blue color
}
else {
   // Set black color
}

或更简单:

cell.textLabel.textColor = (indexPath.row % 6 == 0) ? [UIColor blueColor] : [UIColor blackColor];
于 2013-02-26T13:24:16.233 回答