如何从另一个函数更新cellimages?

时间:2012-10-15 10:24:50

标签: ios uitableview

我有一个聊天应用程序,我想在其中显示在线成员和离线成员。现在我为在线成员添加一个绿点作为像这样的单元格图像:

UIImage *cellImage = [UIImage imageNamed:@"green.png"];
cell.imageView.image = cellImage;
[cell.imageView setTag:102];
//NSStringEncoding encoding=NSASCIIStringEncoding;
cell.imageView.frame=CGRectMake(0,0,13,13);
cell.imageView.bounds=CGRectMake(0,0,13,13);
[cell.imageView setClipsToBounds:NO];

现在当用户离线时,我想将此图像更改为红色。现在,我正在触发功能中删除表格视图中离线的用户:

[self.tableView beginUpdates];
[self.tableView deleteRowsAtIndexPaths:[NSArray arrayWithObject:[NSIndexPath indexPathForRow:[channel.memberIDs indexOfObject:memberID] inSection:0]]
                      withRowAnimation:UITableViewRowAnimationTop];
[self.tableView endUpdates];

但现在我不想做删除过程。我想将图像更改为我所拥有的red.png。谁能告诉我怎么办?

2 个答案:

答案 0 :(得分:1)

这可以通过以下方式实现:

  1. cellForRowAtIndexPath:中检查用户是在线还是离线,并根据该图像将图像分配给imageView。
  2. 当任何用户离线时,只需使用[yourTableView reloadData];
  3. 重新加载表格视图

答案 1 :(得分:0)

NSArray *cellArray = (NSArray *) [[NSArray arrayWithObject:[NSIndexPath indexPathForRow:[channel.memberIDs indexOfObject:memberID] inSection:0]] ];

    for (int i = 0 ;i < [cellArray count] ;i++) {
        NSIndexPath *indexPath = [cellArray objectAtIndex:i];

        UITableViewCell *cell = [ self.tableView cellForRowAtIndexPath:indexPath];

         UIImage *cellImage = [UIImage imageNamed:@"red.png"]; //image changed to red
        cell.imageView.image = cellImage;

    }

[self.tableView reloadData];

此代码应将单元格图像数组更改为红色图像。要更改单个单元格图像(即,如果不需要单元格数组),请删除for循环并更改
   NSIndexPath *indexPath = [cellArray objectAtIndex:0];