0

オンラインメンバーとオフラインメンバーの両方を表示したいチャットアプリケーションがあります。今、私は次のようなセル画像としてオンラインメンバーに緑色の点を追加しています:

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。誰かが私にそれをどのように行うことができるか教えてもらえますか?

4

2 に答える 2

1

これは次のように実現できます。

  1. ユーザーがオンラインかオフラインかを確認し、それcellForRowAtIndexPath:に基づいて画像をimageViewに割り当てます。
  2. ユーザーがオフラインになった場合は、を使用してテーブルビューをリロードするだけです。[yourTableView reloadData];
于 2012-10-15T10:35:43.690 に答える
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];

于 2012-10-15T10:38:52.753 に答える