Ios 如果消息是新的,则更改表视图单元格颜色

Ios 如果消息是新的,则更改表视图单元格颜色,ios,objective-c,iphone,Ios,Objective C,Iphone,我是iOS新手,请帮助我。我从服务器收到一些带有键“messageId”的消息。我正在tableview中显示这些消息。现在,我必须区分,如果有新的消息第一次在该表视图中打开,我必须更改单元格中该消息的颜色 cell.notificationMessageDate.text = [[self.notifications objectAtIndex:indexPath.row] valueForKey:@"msgCreatedDate"]; cell.notificationMessageTex

我是iOS新手,请帮助我。我从服务器收到一些带有键“messageId”的消息。我正在tableview中显示这些消息。现在,我必须区分,如果有新的消息第一次在该表视图中打开,我必须更改单元格中该消息的颜色

cell.notificationMessageDate.text = [[self.notifications objectAtIndex:indexPath.row] valueForKey:@"msgCreatedDate"];

cell.notificationMessageText.text = [self stringByStrippingHTML:[[self.notifications objectAtIndex:indexPath.row] valueForKey:@"message"]];

NSString *str = [[self.notifications objectAtIndex:indexPath.row] valueForKey:@"messageId"];

self.isAlreadyExist = false;


if (str ) {
    cell.backgroundColor = [UIColor whiteColor];
} else {

}

@AADi我看到您正在收到来自通知的消息。我不知道你实施了什么结构

为了实现您想要的,我觉得您必须实现一个字典或数组,在其中存储数据,无论从何处获取数据。然后将数组或指令的计数传递给表。现在维护一个存储数组或dict的上一个计数的变量。在单元格中的行中,将索引路径与数组或dict的上一个计数进行比较。如果索引路径大于上一个计数,只需更改该索引路径处单元格的背景,并用当前计数更新上一个计数的值

如果您不理解或有任何疑问,请在此处询问


希望它能对您有所帮助。

@AADi我看到您收到了来自通知的消息。我不知道你实施了什么结构

为了实现您想要的,我觉得您必须实现一个字典或数组,在其中存储数据,无论从何处获取数据。然后将数组或指令的计数传递给表。现在维护一个存储数组或dict的上一个计数的变量。在单元格中的行中,将索引路径与数组或dict的上一个计数进行比较。如果索引路径大于上一个计数,只需更改该索引路径处单元格的背景,并用当前计数更新上一个计数的值

如果您不理解或有任何疑问,请在此处询问


希望它能对您有所帮助。

一句忠告,这不是检查本地消息是否是新消息的好方法。如果用户卸载并重新安装应用程序,那么即使用户可能已经阅读了这些消息,所有消息对用户来说都将是新的


更好的方法是发送布尔变量,如
seen
read
,以及来自服务器的消息的其他详细信息,并相应地显示单元格。要将消息标记为已读或已看到,您可以使用messageID在后端对服务器进行API调用以反映它。

一句忠告,检查消息是否是本地新消息不是一个好方法。如果用户卸载并重新安装应用程序,那么即使用户可能已经阅读了这些消息,所有消息对用户来说都将是新的


更好的方法是发送布尔变量,如
seen
read
,以及来自服务器的消息的其他详细信息,并相应地显示单元格。要将消息标记为已读或已看到,您可以使用messageID在后端反映消息的API调用服务器。

显示您尝试过的代码。我必须检查该表中是否已存在messageID,然后该表应为白色,如果它是第一次打开,则该表应为蓝色color.cell.notificationMessageDate.text=[[self.notifications objectAtIndex:indexath.row]valueForKey:@“msgCreatedDate”];cell.notificationMessageText.text=[self-StringByStripingHTML:[[self.notifications objectAtIndex:indexPath.row]valueForKey:@“message”];NSString*str=[[self.notifications objectAtIndex:indexath.row]valueForKey:@“messageId”];self.isAlreadyExist=false;如果(str){cell.backgroundColor=[UIColor whiteColor];}否则{}您可以为每条消息维护一个标志,称为isNew。打开后,将其设置为new=NO。对于每封新邮件,您可以应用蓝色。@AADi不要将代码放在注释中。它不可读。而是用您尝试过的代码更新您的问题。显示您尝试过的代码。我必须检查该表中是否已存在messageId,然后该ID应为白色,如果是首次打开,则该ID应为蓝色。cell.notificationMessageDate.text=[[self.notifications objectAtIndex:indexPath.row]valueForKey:@“msgCreatedDate”];cell.notificationMessageText.text=[self-StringByStripingHTML:[[self.notifications objectAtIndex:indexPath.row]valueForKey:@“message”];NSString*str=[[self.notifications objectAtIndex:indexath.row]valueForKey:@“messageId”];self.isAlreadyExist=false;如果(str){cell.backgroundColor=[UIColor whiteColor];}否则{}您可以为每条消息维护一个标志,称为isNew。打开后,将其设置为new=NO。对于每封新邮件,您可以应用蓝色。@AADi不要将代码放在注释中。它不可读。相反,请用您尝试过的代码更新您的问题。您好@aarsh,请告诉我如何使用示例代码进行更新。我是一名新生,我没有得到任何关于如何做到这一点的线索。嗨@aarsh,你能告诉我如何用示例代码做到这一点吗。我是新生,我不知道该怎么做。