0

我将自定义颜色放入可以根据情况更改的表格单元格中。下面的代码来回改变颜色。我不喜欢reloadData每次都必须做一个才能让颜色出现的事实。有没有更便宜的方法来强制单元格颜色更新?

这里还有其他代码已被删除。

-(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
    // testing for old selected color
    if (checkedIndexPath)
    {
        // returning old checked cell back to blue
        UITableViewCell *uncheckCell = [tableView cellForRowAtIndexPath:checkedIndexPath];
        uncheckCell.backgroundColor = [UIColor blueColor];
    }

    // changing selected cell background color
    UITableViewCell *cell = [tableView cellForRowAtIndexPath:indexPath];
    cell.backgroundColor = [UIColor greenColor];
    checkedIndexPath = indexPath;

    // reloadingtable data
    [self.tableVerseView reloadData];
}
4

3 回答 3

3

您不需要 reloadData 方法。有 reloadRowsAtIndexPaths 方法:

- (BOOL)tableView:(UITableView *)tableView shouldHighlightRowAtIndexPath:(NSIndexPath *)indexPath {
    return YES;
}

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
    [(MyCellClass *)[self.tableView cellForRowAtIndexPath:indexPath] setBackgroundColor:[UIColor greenColor]];
    [self.tableView reloadRowsAtIndexPaths:[self.tableView indexPathsForVisibleRows]  withRowAnimation:UITableViewRowAnimationAutomatic];
}
于 2013-03-02T15:21:39.077 回答
2

我认为除了[... reloadData].

你需要按照你的方式去做。

编辑:

要更改字体颜色,请使用:

label.textColor=[UIColor redColor];
label.font=[UIFont fontWithName:@"Helvetica-Bold" size:12.0];
于 2013-03-02T15:15:17.197 回答
0

如果想在某些事件上改变你的细胞的颜色,你不需要reloadData,你只需要知道indexPath细胞。如果你能在你的情况下得到它,请按照以下步骤操作:

  • 通过cellForRowAthInedexPath方法检索单元格

    - (UITableViewCell *) retriveCellForIndexPath : (NSIndexPath *) indexPath in : (UITableView *) tableView{
        return [tableView cellForRowAtIndexPath:indexPath];
    }
    
  • 现在cell以您想要的方式更新

  • 您还可以更新单元格内的所有 UIContent,只需使用单元格引用检索它们,在标签的情况下,

        [cell.textLabel setTextColor:[UIColor redColor]];
    
于 2013-03-02T17:01:11.207 回答