カスタムのテーブルビューセルを使用してメッセージを送信するために、アプリにテーブルビューがあります。このテーブルビューには、JSON からの配列が取り込まれます。メッセージが未読の場合に青い点の画像を表示するセルに UIImageView があります。
ここにいくつかのコードがあります:
- (void)viewDidAppear:(BOOL)animated
{
[super viewDidAppear:YES];
messagesArray = [self getMessages];
[messagesTableView reloadData];
}
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
NSString *cellIdentifier = @"MessagesCell";
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:cellIdentifier];
if (!cell)
cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:cellIdentifier];
NSDictionary *messagesDictionary = [messagesArray objectAtIndex:indexPath.row];
UILabel *nameLabel = (UILabel *)[cell viewWithTag:100];
nameLabel.text = [messagesDictionary objectForKey:@"fromUserName"];
UIImageView *readImage = (UIImageView *)[cell viewWithTag:103];
NSNumber *boolNumber = [messagesDictionary valueForKey:@"readFlag"];
BOOL read = [boolNumber boolValue];
if (!read)
readImage.image = [UIImage imageNamed:@"Message Read Circle"];
return cell;
}
メッセージが選択されると、サーバーにメッセージを送信してメッセージが既読であることを知らせますが、戻っても未読の画像が残っています。シミュレーターでアプリを終了し、アプリをリロードすると、選択したメッセージから未読の画像が消えているため、既読メッセージとしてマークが通過していることがわかります。うまくいかないのはなぜ[messagesTableView reloadData]
ですか?