在没有重新加载数据的情况下强制表中的屏幕更新

时间:2013-03-02 15:11:17

标签: iphone ios uitableview reloaddata

我将自定义颜色放入可以根据具体情况改变的表格单元格中。下面的代码可以很好地改变颜色。我不喜欢每次都要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];
}

3 个答案:

答案 0 :(得分: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];
}

答案 1 :(得分:2)

我认为没有任何其他方法可以重新加载[... reloadData]以外的所有表格单元格。

你需要按照自己的意愿去做。

编辑:

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

label.textColor=[UIColor redColor];
label.font=[UIFont fontWithName:@"Helvetica-Bold" size:12.0];

答案 2 :(得分:0)

如果想要在某些事件上更改您的细胞的颜色,则不需要reloadData,您需要的只是知道indexPath细胞。如果您可以在 环境 上执行此操作,请按以下步骤操作:

  • 使用

    cellForRowAthInedexPath方法检索单元格
    - (UITableViewCell *) retriveCellForIndexPath : (NSIndexPath *) indexPath in : (UITableView *) tableView{
        return [tableView cellForRowAtIndexPath:indexPath];
    }
    
  • 现在以您希望的方式更新cell

  • 此外,您可以使用单元格引用更新单元格内的所有UIContent,只需使用单元格引用进行检索。对于标签,

        [cell.textLabel setTextColor:[UIColor redColor]];